如何使用意图更新活动?

时间:2009-08-24 19:39:14

标签: android android-activity android-intent

我有一个正在下载文件的服务。下载完成后,我想更新Activity中的“已下载文件”列表,但前提是Activity正在运行。如果Activity尚未运行,我不希望它开始。

我希望通过制作一个带有特殊标志的新Intent来实现这一目标。

任何人都知道如何实现这一目标?一个很小的代码示例可能吗?

2 个答案:

答案 0 :(得分:19)

您可以在Activity的onResume()方法上创建新的BroadcastReceiver实例并沿着这些行执行某些操作:

registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));

之后,覆盖myReceiver的onReceive()方法以调用更新所需组件的函数:

@Override 
public void onReceive(Context context, Intent intent) {
...
    updateViewWithData(service.getNewFileData());
...
}

在您的Activity的onPause()方法上,只需取消注册接收器:

unregisterReceiver(myReceiver);

我希望这会对你有所帮助,随时可以询问是否有不清楚的事情。

答案 1 :(得分:3)

执行此操作的好方法是将“已下载的文件”活动绑定到服务。绑定服务时,在onServiceConnected函数中,注册Binder回调。然后,只要有新数据可用,服务就会调用该回调。如果活动未运行,则服务端的回调列表将为空,因此不会通知您的活动。

有关此方法的示例,请查看Android SDK中的RemoteService.java:

样品\ ApiDemos \ SRC \ COM \示例\机器人\的API \应用\