2016-12-14 13 views
0

私のAndroidアプリケーションでサービスを使用しようとしましたが、問題があります。画面ロック後にサービスを中断してサービスを実行すると、サービスの再起動のように表示されます。これは私のコードです:サービスがAndroidで再起動しないようにします

public class MyService extends Service { 
private static String TAG = "Service"; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.i(TAG, "onCreate"); 

} 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onDestroy() { 
    Log.i(TAG, "Destroyed"); 
    super.onDestroy(); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i(TAG, "OnStartcommmand"); 
    return START_STICKY; 
} 

} 

なぜサービスが何度も再起動しますか?サービスの再開を防ぐにはどうすればよいですか?出来ますか ? ありがとう

+0

リターンSTART_NOT_STICKY onStartCommandで – Nas

答えて

2

あなたのServiceは、優先度の高いアプリのリソースを節約するために、システムによって強制終了されます(電話が切れた場合など)。あなたのServiceは、殺された後、onStartCommandに返された値によって再現することができます。 onStartCommandSTART_STICKYを返すと、システムはサービスを終了した後にサービスを再作成します。そうでない場合、START_NOT_STICKYは、OSにサービスの再作成を邪魔しないように指示します。

の方法を使用して、Serviceを生かしておくことができます。ここではドキュメントは次のとおりです。

Aサービスは、システムが、それはユーザーが積極的に認識しているものにするために を考慮フォアグラウンド状態でサービスを配置するstartForeground(int型、通知)API を使用することができます開始し、したがって、メモリが不足している場合には殺し候補者は ではありません。 (これは、現在のフォアグラウンドアプリケーションから極端なメモリ圧力 の下で殺さするサービスのために、理論的には可能 であるが、実際には、これは 懸念すべきではない。)

関連する問題