就 Android SDK 而言,这可能没有多大意义,但是,在 C++ 中,我习惯于将 main.cpp(特别是 main() 函数)作为我声明和初始化其他类/对象的地方,然后所有我的应用程序确实发生在这些课程中。之后我再也没有回来检查 main.cpp 中的任何内容。但在 Java、Android SDK 中,您必须在主要活动中覆盖数十个方法,所有这些都发生在一个文件中。例子:
我的项目中有一个 MainActivity.java 和 SomeTest.java 文件,其中首先是扩展 Activity 的默认 MainActivity 类,而 SomeTest.java 包含声明和运行新线程的类。我从 MainActivity.java 初始化 SomeTest 类,并将活动句柄作为参数传递给它:
SomeTest test = new SomeTest(MainActivity.this);
有了 MainActivity 的句柄,我继续从这个新创建的线程做所有事情。当我需要更新 UI 时,我使用 runOnUiThread() 在我的主布局上创建并显示一个新的 ListView(例如)。我想获取新创建的 Listview 的宽度和高度,因为我必须在 MainActivity.java 中覆盖 onWindowFocusChanged() 并从那里通知线程,因为 getWidth() 和 getHeight() 只有在 ListView 是时才有值实际显示在屏幕上。对我来说,从 MainActivity 到该线程进行这样的连接(如果你愿意的话,是“回调”)不是一个好习惯。
有没有办法可以将 onWindowFocusChanged() 之类的方法保留在线程中,并且根本不接触 MainActivity.java?
正如我所说,可能没有多大意义。