2013-07-11 13 views
0

我有一個MainApplication類,它擴展了Application
另外我有一個AlarmBroadcastReceiver類,它延伸BroadcastReceiver
onReceive(context, intent)方法AlarmBroadcastReceiver從獲取數據並啓動服務。我在一個單獨的線程中運行的服務,這是其在AndroidManifest.xml聲明:新服務實例啓動時,應用程序類變量爲空

<service android:name="***myPackageName***.AlarmService" 
       android:process=":remote"> 
</service> 

的問題是:如果我點擊「Home」按鈕,在Android 4.0的關閉應用程序,打開「最近用過的應用」和拉動當服務正在運行時應用程序左側,然後再次啓動應用程序(服務仍在運行),一個新服務在AlarmBroadcastReceiver收到新意向時啓動,無法獲取MainApplication類的數據(偶數MainApplication的靜態變量爲空)。爲什麼?
我不能進行調試,因爲當我關閉應用程序調試器deattached ...

回答

1

爲什麼?

因爲你添加android:process=":remote",它運行在一個單獨的進程爲您服務,您的Application對象自己獨立的副本。

只需刪除android:process=":remote",因爲使用多個進程無論如何都是Android上的反模式。

+0

好吧,我瞭解應用程序的副本。非常感謝你!我將更改我的代碼... – smb

+0

我更改了代碼,現在該錯誤已修復。我已經刪除了'android:process =「:remote」',並在一個單獨的線程中啓動一個服務。 – smb

相關問題