2

私は1つのインテントサービスを作成しました。そのサービスを活動から停止したいのですが、そのサービスを停止するにはどうすればよいですか? 私のコードは次のとおりです。

MyActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {

Intent intent = new Intent(this, myService.class);
intent.putExtra("myHand", new Messenger(this.myHand)); 
startService(intent);

}

myService.java

public class myService extends IntentService {

@Override
protected void onHandleIntent(Intent intent) {

String signal = intent.getAction();
if (signal != null && signal.equals("stop")) {

stopSelf();

} else {
t.schedule(new TimerTask() {System.out.println("print")}, 0, 10000);

}

}
}

ボタンのクリックでサービスを停止する

Intent in = new Intent(this, myService.class);
in.setAction("stop");
stopService(in);

誰かがサービスを停止するのを手伝ってくれますか?

4

3 に答える 3

4

IntentServiceのドキュメントから

IntentService は、オンデマンドで非同期要求 (インテントとして表現) を処理するサービスの基本クラスです。クライアントは startService(Intent) 呼び出しを介してリクエストを送信します。サービスは必要に応じて開始され、ワー​​カー スレッドを使用して各インテントを順番に処理し、作業がなくなると停止します。

つまり、停止する必要はありませんIntentService。実行する作業がなくなると、自動的に終了します。

編集:

あなたのコードを振り返ってみると、あなたは???IntentServiceを止めたいのを止めたくないようです。TimerTask

t.schedule(new TimerTask() {System.out.println("print")}, 0, 10000);

私はそれが何であるか分かりませんtが、私はそれがTimer. その場合、それはそれ自体で実行されており、Threadを終了しようとしてIntentServiceも無意味Timerです。代わりに を殺してください。

IntentServiceまた、独自の実行スレッドを維持するタイプのオブジェクトを作成するためにを使用するのはなぜですか?

于 2012-06-30T07:41:40.643 に答える
2

そのサービスを活動から停止したいのですが、そのサービスを停止するにはどうすればよいですか?

IntentServiceは停止します。そうすべきではありません。呼び出すことはできませんstopSelf()

すべての要求が処理されると、 はIntentService停止します。

于 2012-06-30T07:46:29.313 に答える
0

私が知っていることからIntentHandler、別の新しいスレッドを作成し、その作業を行い、自分自身を殺します。

したがって、アクティビティから明示的に停止する必要はないと思います。

于 2012-06-30T07:42:06.400 に答える