我正在尝试在收到推送通知时更新 UI 的状态。为此,我需要启动一个 AsyncTask
来执行一些网络操作,然后根据结果更新 UI。
根据 BroadcastReceiver
的文档,在接收器中执行异步操作是不安全的,因为执行它的进程可能会在 onReceive()
返回时立即终止,假设有在该过程中没有其他“应用程序组件”。
BroadcastReceiver
是在它自己的进程中运行,还是在与包含它的 Activity 相同的进程中运行?因为只要有要更新的 UI,我只关心任务的完成情况,所以我不担心 AsyncTask
在 Activity 关闭时死亡。假设 BroadcastReceiver 与 Activity 处于同一进程中,这是否可以/安全地启动我在接收器中描述的任务?
编辑:
澄清一下,我在 Activity 的 onResume()
中注册接收器并在 onPause()
中注销它,因此它应该只在 Activity 已经结束时接收 Intent 活跃。
最佳答案
广播接收器不是在它自己的进程上运行,而是在 UI 线程上运行。
只有当您的应用程序中没有其他 Activity 或服务正在运行时,您的进程才会在 onReceive 方法返回后被终止。
如果您的广播接收器是内部类的一个实例,并且仅在您的 Activity 处于 Activity 状态时接收,那么您的进程在 onReceive 方法返回后不会被终止。
关于android - 使用 BroadcastReceiver 启动 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697053/