2013-08-21 198 views
5

我正在開發一個應用程序,通過接收器與我的服務進行通信。安卓服務在應用程序死機後重新啓動

服務代碼

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(LOCATION_UPDATE); 
    mBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      receiverWorks(intent); 
     } 
    }; 
    this.registerReceiver(mBroadcastReceiver, intentFilter); 
    return START_STICKY; 
    } 

服務的艙單申報

<service 
     android:name="com.test.IService" 
     android:enabled="true" 
     android:label="IService" 
     android:process=":iservice" > 
    </service> 

問題是,它自行重啓後的應用程序(我的應用程序使用這個服務)被殺害。我怎樣才能防止這個?試圖刪除android:進程,但沒有任何變化。

等待你的幫助。

感謝

+1

你有沒有找到一個解決辦法?我遇到同樣的問題 – StuStirling

回答

6

服務重新啓動本身,因爲你正在返回START_STICKYonStartCommand()

您需要返回start_not_sticky代替。

欲瞭解更多信息,請閱讀:START_STICKY and START_NOT_STICKY

+6

感謝您的回覆。但正如我所知,如果服務停止,START_STICKY會自動重新創建。問題是爲什麼我的應用程序在關閉服務之後銷燬它。 – dracula

相關問題