首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用意图更新活动?

如何使用意图更新活动?
EN

Stack Overflow用户
提问于 2009-08-24 19:39:14
回答 2查看 15.6K关注 0票数 18

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

我希望我可以通过制作一个带有特殊标志的新Intent来做到这一点。

有人知道我怎么做到这一点的吗?也许是一个很小的代码示例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-24 21:12:22

您可以创建新的BroadcastReceiver实例,并在活动的onResume()方法上执行以下操作:

代码语言:javascript
复制
registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED));

在此之后,重写myReceiver的onReceive()方法以调用更新所需组件的函数:

代码语言:javascript
复制
@Override 
public void onReceive(Context context, Intent intent) {
...
    updateViewWithData(service.getNewFileData());
...
}

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

代码语言:javascript
复制
unregisterReceiver(myReceiver);

我希望这会对你有所帮助,如果有什么不清楚的地方,请随时询问。

票数 19
EN

Stack Overflow用户

发布于 2009-08-25 08:33:02

这样做的好方法是将“下载的文件”活动绑定到服务。在绑定服务时,在函数onServiceConnected中注册一个绑定器回调。然后,只要有新数据可用,服务就会调用该回调。如果activity没有运行,服务端的回调列表将为空,因此不会通知您的activity。

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

samples\ApiDemos\src\com\example\android\apis\app\

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1324307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档