我有一个下载文件的服务。下载完成后,我希望更新Activity
中的“已下载文件”列表,但前提是Activity
正在运行。如果Activity
尚未运行,我不希望它启动。
我希望我可以通过制作一个带有特殊标志的新Intent
来做到这一点。
有人知道我怎么做到这一点的吗?也许是一个很小的代码示例?
发布于 2009-08-24 21:12:22
您可以创建新的BroadcastReceiver实例,并在活动的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);
我希望这会对你有所帮助,如果有什么不清楚的地方,请随时询问。
发布于 2009-08-25 08:33:02
这样做的好方法是将“下载的文件”活动绑定到服务。在绑定服务时,在函数onServiceConnected中注册一个绑定器回调。然后,只要有新数据可用,服务就会调用该回调。如果activity没有运行,服务端的回调列表将为空,因此不会通知您的activity。
有关此方法的示例,请查看Android SDK中的RemoteService.java:
samples\ApiDemos\src\com\example\android\apis\app\
https://stackoverflow.com/questions/1324307
复制相似问题