2016-07-25 53 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

相關問題