在我的应用程序中,我有两个活动,A和B.A下载一些数据并在下载数据时启动活动B - 这是通过BroadcastReceiver完成的,其onReceive()
方法通过意图启动B。
我的问题是,当我的应用程序在数据仍在下载时进入后台(例如我启动我的应用程序,然后快速单击“主页”按钮,或使用方形“切换”按钮切换应用程序),我的一旦下载了数据,app就会回到前台......很烦人。
到目前为止,我已经尝试添加标志并设置操作以避免这种情况,包括intent.setAction(Intent.ACTION_SCREEN_ON)
,这可能接近答案:它在运行API 16的设备上运行良好但在我的设备上运行不正常正在运行API 22.
答案 0 :(得分:2)
通常,人们使用服务在后台执行操作。服务没有UI(出于显而易见的原因)。根据定义,活动是一项前台任务 - 您所看到的行为正是应该发生的行为。
我强烈建议不要尝试将某项活动转变为服务。当你可以使用专为你寻求的目的而设计的Android功能时,你就会在整个应用程序生命周期中工作。
这是一个快速资源,我建议你阅读更多有关服务的内容:
https://developer.android.com/training/best-background.html
BroadcastReceiver
的{{1}}即使您的应用处于后台也会收到并处理Activity
个对象,但不会强制您将应用置于前台。如果您想要在应用程序不可见时通知用户有关在后台发生的事件,请使用Intent
。 从不 启动Notification
以响应来电广播Activity
。