我已经实现了一个在我的应用程序和Google文档之间执行异步同步的服务。我想在同步完成后更新我的应用程序的顶级活动。但是,由于该服务,应用可能处于未知状态。有没有办法让顶级活动成为可能,从服务中的asynchtask重新创建自己。从异步服务更新活动
回答
在您的服务中,只需致电startActivity(new Intent(this, TopLevelActivity.class))
。如果它尚未运行,它将启动您的TopLevelActivity,或者在您的TopLevelActivity的方法正在运行时调用您的TopLevelActivity方法,并将其带到最前面。如果您想收到通知,您可以覆盖onNewIntent()
并捕获意图。
正确的方式做到这一点,我相信,是使用使用远程接口AIDL: https://developer.android.com/guide/components/aidl.html
您做一个简单的*.aidl
文件与它的接口,和Android工具将生成接口类为你。它将允许您注册回调方法。比折腾startActivity意图来得更干净。
谢谢本。我会研究这个。 – 2010-04-02 20:58:51
我读过广播不应该在你的应用程序内部进行通信时因为开销。我认为本托宾的解决方案可能是最好的答案。 – 2010-04-03 04:20:29
- 1. 如何从异步任务更新当前活动
- 2. 更新活动从服务TextView
- 3. 更新前台服务notificaton从活动
- 4. android服务更新活动
- 5. 异步新活动失败
- 6. 从活动,异步和服务访问SQLite
- 7. ProgressBar没有从异步任务更新
- 8. 从异步任务更新表android
- 9. 从WinRT异步任务lambda更新UI
- 10. 异步任务更新UI
- 11. Android异步用户界面从服务更新失败
- 12. 角度 - 异步更新和呈现从服务到控制器
- 13. SQL服务器更新/活动列
- 14. 服务sharedpreferences更新活动中的值
- 15. 更新服务中的活动数据
- 16. 在Android中启动活动时的异步服务调用
- 17. 活动从服务
- 18. 从OnPostExecute更新UI(异步)
- 19. 同步和异步活动
- 20. 活动后运行异步任务
- 21. 异步任务服务未启动
- 22. 异步更新
- 23. 从服务启动活动
- 24. 差异同步活动ANS异步活动之间
- 25. WCF服务异步/同步
- 26. Android服务和活动更改活动中的服务价值
- 27. JAXRS异步服务
- 28. 异步Web服务
- 29. 禁用重新执行异步任务完成前台活动
- 30. 调用方法从服务中更新活动中的TextViews
请记住,用户不一定会欣赏在他们正在做的事情(例如,玩游戏,键入文字消息,在拨打电话时使用拨号盘)突然冒出来的活动。 – CommonsWare 2010-04-02 18:53:38
谢谢合作。这工作!但是我确实需要为我的活动类添加一个静态标志,告诉我他们是否当前处于活动状态。我暂停翻转此标志并继续。这样我就不会改变手机的状态。如果活动已打开,我只需更新UI。我没有覆盖onNewIntent(),我检查了一个布尔值,它被添加到我的服务发送的意图中。这样,如果意图来自我的服务,我更新了用户界面。由于布尔运算符的原因,我不太喜欢这种方法,但它的功能。再次感谢。 – 2010-04-02 18:55:33
或者,您可以在'onResume()'中使用您添加到服务中的一些自定义方法将您的活动注册到服务中。像'mService.registerActivity(this)'和'onService()'中的'mService.unregisterActivity(this)',这样服务就知道Activity是否当前处于活动状态。 – synic 2010-04-02 19:09:38