2016-07-25 52 views
0

在我的应用程序中,我有两个活动,A和B.下载一些数据并启动活动B当数据被下载时 - 这是通过BroadcastReceiver完成的,其方法从onReceive()开始B到一个意图。如何不启动如果应用程序在后台

我的问题是,当我的应用程序转到后台,而数据仍在下载时(例如,我启动我的应用程序,然后快速单击“home”按钮或使用方形“开关”按钮切换应用程序)一旦数据被下载,我的应用程序就会回到前台......烦人。

到目前为止,我已经试图添加标志和设置动作以避免这种情况,包括intent.setAction(Intent.ACTION_SCREEN_ON),它可能接近答案:它在运行API 16的设备上运行良好,但不在运行API的设备上运行22.

+1

添加一个静态变量来保存boolean以检查是否处于活动状态。如果主动移动intent否则不显示。即在onPause中MainActivit.isactive = false,在onResume中MainActivit.isactive = true,并在内部检查MainActivit.isactive onReceve() – Muthu

回答

2

通常,使用服务在后台执行操作。服务没有UI(出于显而易见的原因)。根据定义,一个Activity是一个前台任务 - 你看到的行为正是应该发生的事情。

我强烈建议不要试图将活动转变为服务。如果您可以使用Android设计的功能来满足您的需求,那么您会在整个应用程序生命周期中工作。

这里有一个快速的资源,我建议你阅读更多的服务:

https://developer.android.com/training/best-background.html

BroadcastReceiverActivity接收和处理甚至Intent对象时,你的应用程序在后台,但没有按”不要强迫你的应用程序前台。如果您想在应用程序不可见时通知用户背景发生的事件,请使用Notification从不开始Activity响应传入的广播Intent

+0

的确......在最佳实践中非常明显:“** _从不** _开始一个活动'作为响应到传入的广播“意图”。“ – FlorianT

相关问题