java – 保持事物分散Android

前端之家收集整理的这篇文章主要介绍了java – 保持事物分散Android前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Android SDK而言,这可能没有多大意义,但是,在CI中我习惯将main.cpp(特别是main()函数)保存为我声明和初始化其他类/对象的地方,然后是所有的东西我的应用程序确实发生在这些类中.之后我再也没有回来检查main.cpp中的任何内容.
但是在Java,Android SDK中,您必须覆盖主要活动中的许多方法,并且所有方法都在一个文件中进行.例:

我的项目中有一个MainActivity.java和SomeTest.java文件,其中第一个是默认的MainActivity类,它扩展了Activity,SomeTest.java包含声明和运行新Thread的类.我从MainActivity.java初始化SomeTest类,并将活动的句柄作为参数传递给它:

SomeTest test = new SomeTest(MainActivity.this);

有了MainActivity的句柄,我继续从这个新创建的线程做一切.当我需要更新UI时,我使用runOnUiThread()在我的主布局上创建并显示一个新的ListView(例如).我想得到新创建的Listview的宽度和高度,因为我必须在MainActivity.java中覆盖onWindowFocusChanged()并从那里通知线程,因为getWidth()和getHeight()只有ListView时才有值实际上显示在屏幕上.对我来说,从MainActivity到该线程进行这样的连接(‘回调’,如果你愿意的话)并不是一个好习惯.

有没有办法可以在线程中保留像onWindowFocusChanged()这样的方法,而不是触及MainActivity.java?

正如我所说,可能没有多大意义.

解决方法

Is there a way I can keep methods like onWindowFocusChanged() within the thread and don’t touch the MainActivity.java at all?

onWindowFocusChanged()是一个回调方法.它被称为活动.你无法改变这一点.

And having the handle to MainActivity,I proceed doing everything from this newly created thread.

这通常不是一个好主意.使用后台线程,比如从文件数据库加载一些数据是完全合理的(尽管使用Loader或AsyncTask可能更好).但是,通常,后台线程既不知道也不关心“新创建的ListView的宽度和高度”之类的事情.

当然欢迎您将一些逻辑从活动中移出并转移到其他类中.您可以使用特定的框架,例如片段或自定义视图.但是,类结构不应由您的线程模型驱动.例如,让我们回到你的开场白:

in C++ I am used to keeping my main.cpp (and specifically main() function) as a place where I declare and initialize other classes/objects,and afterwards all the things that my application does take place in those classes

但是,在C中,你不会说你被锁定只有两个类,其中一个是在一些后台线程上运行.虽然您可能有一个或多个类碰巧使用后台线程(或线程),但类结构背后的驱动力不是“我有一个后台线程”而是“我想重用XYZ逻辑”或“我希望使用类层次结构来支持策略模式“或某些此类.

原文链接:https://www.f2er.com/android/128356.html

猜你在找的Android相关文章