我有一个下载文件的服务。 当下载完成后,我想在我更新我的“已下载的文件”列表中Activity
,但只有当Activity
正在运行。 我不想让Activity
开始,如果它尚未运行。
我希望我可以做一个新的做这个Intent
与一些特殊的标志。
任何人有任何想法,我怎么能做到这一点? 也许一个很小的代码示例?
我有一个下载文件的服务。 当下载完成后,我想在我更新我的“已下载的文件”列表中Activity
,但只有当Activity
正在运行。 我不想让Activity
开始,如果它尚未运行。
我希望我可以做一个新的做这个Intent
与一些特殊的标志。
任何人有任何想法,我怎么能做到这一点? 也许一个很小的代码示例?
您可以创建新的广播接收器的实例,做东西沿着这些路线上的活动的的onResume()方法:
registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));
在此之后,覆盖myReceiver的的onReceive()方法调用,更新所需的组件的功能:
@Override
public void onReceive(Context context, Intent intent) {
...
updateViewWithData(service.getNewFileData());
...
}
您的活动的的onPause()方法,只是注销接收器:
unregisterReceiver(myReceiver);
我希望这会帮助你,随时问,如果有什么不清楚。
做到这一点的好办法,就是你的“下载文件”活动绑定到服务。 当您绑定的服务,在功能onServiceConnected,注册一个活页夹回调。 然后,只要你有新的数据可用,服务只是调用回调函数。 如果活动没有运行,在服务端回调列表是空的,所以它不会告诉你的活动。
对于这种方法的一个例子,拿在Android SDK中看看RemoteService.java:
样品\ ApiDemos \ SRC \ COM \示例\机器人\的API \应用\