2012-09-24 93 views
4

我有一個android服務,我將它綁定到一個活動,並且解除綁定。問題是,當應用程序關閉,有時當我打開設備時,有時會出現亂七八糟的效果,我知道它開始是因爲吐司消息。讓我們得到的代碼...Android服務啓動ramdomly /自動

活動的onCreate

Intent intent = new Intent(this, Sincronizacao.class); 
this.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 
this.startService(intent); 

代碼爲mConnection

private ServiceConnection mConnection = new ServiceConnection() { 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     serviceBound = true; 
     localBinder = (LocalBinder<Sincronizacao>) service; 
    } 
    public void onServiceDisconnected(ComponentName className) { 
     serviceBound = false; 
     localBinder = null; 
    } 
}; 

而且在破壞

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (serviceBound && mConnection != null) { 
     unbindService(mConnection); 
    } 
    Intent intent = new Intent(this, Sincronizacao.class); 
    stopService(intent); 
    localBinder = null; 
} 

在我的服務,onStartCommand實現,在那裏,我開始了一個線程,查詢一個Web服務並將數據插入到數據庫中,該線程具有一段時間(真),我只是打斷它的onDestroy服務的方法...

編輯

這裏的清單線

android:name="com.company.package.service.Sincronizacao" /> 

我掙扎在這個bug的一些時間已經到了,希望你能幫助我。

感謝,

+0

檢查你的'Manifest'文件,如果你有''調用這個服務,並且在另一種情況下檢查'Service'是否真的被破壞。 –

+0

我在代碼中看不到stopService或stopSelf。引導會自動重新啓動服務。它還會嘗試重新啓動異常關閉的服務。根據系統關閉的方式,它可以在啓動或終止後重新啓動。 –

+0

我有stopService(intent);請在onDestroy方法中再次檢查 – RMalke

回答

3

我是能夠解決的問題......在服務,我感動代碼onStartCommand到onBind。因爲我只是在bidden狀態下使用該服務,所以我沒有任何問題。

此外,以前我使用thread.interrupt()停止服務中的線程,現在我在while中使用了一個標誌,並在onUnbind和onDestroy上將其設置爲false。