我有一个是下载文件的服务。当下载完成后,我想在我的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,注册一个活页夹回调。然后,只要你有新的数据可用,服务只是调用回调函数。如果活动没有运行,在服务端回调列表是空的,所以它不会告诉你的活动。

有关这种方法的一个例子,看看RemoteService.java Android中SDK:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top