【发布时间】:2010-04-02 17:39:53
【问题描述】:
我已经实现了一项服务,可以在我的应用程序和谷歌文档之间进行异步同步。我想在同步完成后更新我的应用程序的顶级活动。但是,由于该服务,该应用程序可能处于未知状态。有没有办法让顶级活动(无论可能是什么)从服务中的异步任务重新创建自己。
【问题讨论】:
标签: android asynchronous service android-activity
我已经实现了一项服务,可以在我的应用程序和谷歌文档之间进行异步同步。我想在同步完成后更新我的应用程序的顶级活动。但是,由于该服务,该应用程序可能处于未知状态。有没有办法让顶级活动(无论可能是什么)从服务中的异步任务重新创建自己。
【问题讨论】:
标签: android asynchronous service android-activity
在您的服务中,只需致电startActivity(new Intent(this, TopLevelActivity.class))。如果 TopLevelActivity 尚未运行,这将启动您的 TopLevelActivity,或者如果您的 TopLevelActivity 已经在运行,则调用它的 onNewIntent() 方法,并将其置于顶部。如果您想收到通知,您可以覆盖 onNewIntent() 并捕获 Intent。
【讨论】:
onResume() 中向服务注册活动;类似于mService.registerActivity(this) 和onPause() 中的mService.unregisterActivity(this),这样服务就知道活动当前是否处于活动状态。
【讨论】:
我相信正确的方法是使用使用 AIDL 的远程接口: https://developer.android.com/guide/components/aidl.html
您创建一个简单的*.aidl 文件,其中包含接口,Android 工具将为您生成接口类。它将允许您注册回调方法。比来回折腾 startActivity 意图要干净得多。
【讨论】: