2012-09-24 4 views
4

나는 안드로이드 서비스를 가지고 있으며, 나는 그것을 활동에 묶었으며, 언 바운드는 파괴되었습니다. 문제는 응용 프로그램이 닫힐 때 아무 것도 시작하지 않는다는 것입니다. 때로는 장치를 켰을 때 가끔 뻔뻔 스러울 때가 있습니다.안드로이드 서비스가 램덤/자동으로 시작됩니다.

활동 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; 
    } 
}; 
에 대한

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

코드를 한 OnCreate 그리고 내 서비스에서

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

을 파괴, onStartCommand 구현 ... 코드에 도착하자, 거기서 나는 웹 서비스를 쿼리하고 데이터베이스에 데이터를 삽입하는 스레드를 시작하고 스레드는 동안 (사실), 단순히 ... 서비스의 방법을들의 OnDestroy 중단

편집 : 여기

내가 일부이 버그에 어려움을 겪고있어 매니페스트 라인

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

입니다 시간은 이미 당신이 나를 도울 수 있기를 바랍니다.

덕분에,

내가 서비스 내에서 ... 문제를 해결할 수 있었다
+0

이 서비스를 호출하는''가있는 경우'Manifest' 파일을 검사하고 다른 경우에는'Service'가 실제로 파괴되는지 확인하십시오. –

+0

코드에 stopService 또는 stopSelf가 표시되지 않습니다. 서비스를 자동으로 다시 시작합니다. 또한 비정상 종료되는 서비스를 다시 시작하려고 시도합니다. 시스템 종료 방법에 따라 부팅하거나 종료 한 후 다시 시작할 수 있습니다. –

+0

나는 stopService (intent)를 가지고있다; onDestroy 메서드에서 다시 확인하십시오. – RMalke

답변

3

, 나는 onBind에 onStartCommand에서 코드를 이동했다. 나는 단지 서비스를 제한된 상태로 사용하기 때문에 아무런 문제가 없었다.

또한 이전에는 thread.interrupt()를 사용하여 서비스 내에서 스레드를 중지했지만 이제는 while 플래그를 사용하고 onUnbind 및 onDestroy에서 false로 설정합니다.

관련 문제