巨大で時間がかかる可能性のあるデータを処理する必要があるアプリを作成しています。
今、私は IntentService について多くのことを読んでおり、実際にはすでに REST 呼び出しを処理するための通信クラスとして実装していますが、今は長時間のデータ処理に使用しようとしています。
タイトルバーに進行状況インジケーターを追加しましたが、ユーザーがクリックしたときに操作をキャンセルできるようになりました。
これを行うエレガントな方法はありますか?(Thread.interrupt()のようなもの)現在、静的ブール値の「実行中」があり、onStartCommandをオーバーライドしました
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction() != null && intent.getAction().equals("stop")) {
running = false;
}
onStart(intent, startId);
return START_NOT_STICKY;
}
私はこれが面倒でエレガントではないと感じており、本来意図されていないことに IntentService を悪用している可能性があると感じています。これを行うよりエレガントな方法はありますか?
行われていることを中断する必要があるため、 stopSelf() は機能しません。私はそれを試してみましたが、コードは実行され続けました。
asynctask を考えたのですが、タスクが生き残れないのではないかと心配です (操作には 15 分ほどかかる場合があります)。