在Android上处理异步回调的好策略是什么?

在Android上处理异步回调的好策略是什么?,第1张

概述应用程序可能包含在不同线程上运行的部件,并在完成时回调某个对象.典型的模式可能如下所示: 1)View或Fragment调用某个模型.该呼叫来自某些视图或片段 model.doSomething(context, new Runnable() { public void run() { /* run on the main thread when model finishes */ }} 应用程序可能包含在不同线程上运行的部件,并在完成时回调某个对象.典型的模式可能如下所示: @H_419_7@

@H_419_7@1)VIEw或Fragment调用某个模型.该呼叫来自某些视图或片段

@H_419_7@

model.doSomething(context,new Runnable() {    public voID run() { /* run on the main thread when model finishes */ }});
@H_419_7@2)模型使用Thread或AsyncTask执行某些 *** 作然后在调用线程上调用回调 – 使用Handler

@H_419_7@

voID doSomething(Context context,Runnable callback) {    Handler handler = new Handler();    // ...    // When finished (this is really done on some separate thread),handler.post(callback);}
@H_419_7@3)回调与调用VIEw或Fragment交互以通过某些控制逻辑前进

@H_419_7@回调可能是触摸未附加到窗口的视图状态,这可能导致应用程序不稳定.

@H_419_7@处理这种情况有哪些好的策略

解决方法 听起来您希望以更一致的方式处理模型和VIEw之间的通信.分离这些的一个好方法是使用服务: @H_419_7@

@H_419_7@http://developer.android.com/reference/android/app/Service.html

@H_419_7@如果您的应用程序仅在单个进程中运行,我建议您查看IntentService,因为它更易于使用.

@H_419_7@一个很好的例子是Google IO 2011 IOSched应​​用:

@H_419_7@http://code.google.com/p/iosched/

@H_419_7@它似乎相当大,但在分离数据问题(来自本地或远程资源)方面,该架构经过深思熟虑.

@H_419_7@在您的视图中运行此服务而不是在您的视图中绑定回调的第二个好处是该服务存在于活动的生命周期之外,因此您不必担心每当您的活动被销毁/暂停时您的回调会发生什么.很多时候,当使用这样的回调时,将调用回调并且活动可能仍然不活跃.

总结

以上是内存溢出为你收集整理的在Android上处理异步回调的好策略是什么?全部内容,希望文章能够帮你解决在Android上处理异步回调的好策略是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1124460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存