0
私はService
私のコードの2つの場所から開始しています。 Service
がonStartCommand()
の内側にあり、別のAndroidでこれは1つのサービスを実行するだけの良い、簡単な方法です
startService
はそれを開始するためになされた場合
は再び私はそれを停止する必要があります。 I以下のコードで
は、このokですか私は何をすべきprivate boolean getFriendListRunning;
を設定しますか?
public class ServiceGetFriendList extends Service{
private final String TAG = "ServiceGetFriendList";
private IBinder mBinder;
private boolean failed = false;
private boolean getFriendListRunning;
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(getFriendListRunning)
return Service.START_STICKY;
getFriendListRunning = true;
try{
work......
} catch (Exception e) {
}finally{
getFriendListRunning = false;
}
}
あなたは 'IntentService' HTTPを使用して考えられている場合は、それを起動しない:// developer.android.com/reference/android/app/IntentService.html? IntentServiceはIntentを介して行う作業を受け取るまで '休眠中です'。 2つ以上のインテントを受信すると、インテントをキューに入れ、受信順に1つずつ処理します。すべての仕事を終えたら、もう一度シャットダウンします。 – Squonk
@MisterSquonk私はIntentServiceを知っていて、呼び出しを待ち行列に入れたくありません。 1つのサービスがすでにonStartCommandの内部で実行されている場合は、呼び出しを強制終了します。 – Erik
あなたのコードに間違いはありませんが、アクティビティを試行するたびに条件付きチェックを行う代わりに、このユースケースを避けるために実装を再設計する方が良いでしょう(2つの場所は同じサービスを開始します)。実行時にサービスを開始する。 – yorkw