这是我第一次制作一个相当大的应用程序,其中有很多部分。
我希望将UI和后台进程保留在不同的类中以避免混淆。但是,我如何以最佳方式在它们之间进行通信。到目前为止,我遇到了一些方法:
在不同的类中声明后台线程,并在UI线程中定义其onPostExecute()方法。
new SetupDefaultFeeds(context) {
@Override
protected void onPostExecute(List<Feed> result) {
default_feeds = result;
for (Feed t : result) {
String log = t.toString();
Log.d("DEFAULT feed", log);
}
menu_btn[0].performClick();
}
}.execute();
使用背景和UI线程之间的标志变量进行信号传递。
线程和处理程序。
还有其他方式,最好的方法是什么。谢谢!
答案 0 :(得分:1)
通过Handler传递消息通常是执行此操作的最“Android-ish”方式。尝试通过标志变量进行所有通信很可能会非常令人头疼。
编辑:Android本身并没有提供将两个类链接在一起的方法,您需要手动完成。一种非常有效的方法是为您的通信创建一个接口,并让UI类或后台线程实现它。然后,在创建类时,您可以将引用传递给另一个对象并通过该接口进行通信。
但是,如果要完全解耦这两个类,可能需要使用BroadcastReceiver,并使用它在UI和后台线程之间发送消息。