Androidアプリがフォーカスをもたなくても、バックグラウンドで実行されるようにするにはどうすればよいですか?ここで起こるのは、中断された後(たとえば、メッセージが到着した後)、そしてそれがフォーカスを戻すと、中断のポイントまで処理したものと一緒にそこに座るだけです。おそらく私のデザインは、それが中断されたところから再開されるという明白な方法を見ることができないので、あまりうまくいきません。 (設計の理由の1つは、実行時間の長いクエリの出力が、最後にすべてではなく中間結果をすぐに与えることが不可欠であるということです)。Androidアプリがフォーカスを持たない状態で、どのように動作させ続けるのですか?
私は別のアプリケーションに切り替えることもできます私のアプリケーションの処理を保つ。私はそれが上記と同じ状況になると思います。
グーグルは、アプリの実行を保つための方法としてservice
を上げますが、ユーザーは自分のアプリケーションの場合のアプリと対話しなければならない場合は、1本のヒットは、これを実行しないように提案しました。
私は自分のデータベースを作成していない1 Asynctask
にを使用します(一度、何ら問題は、これまでに割り込みが発生した場合 - 私はちょうど中断さから読み込みを続け、次の実行上)と、別のAsyncTask
クエリそれをに(これは可能非常に長時間にわたるタスク)が、このアプローチではアプリをバックグラウンドで実行することはできません。中断すると、出力画面が不完全で死んだり、ユーザーの入力画面にフォーカスが戻ったりします。 service
にクエリ機能(現在はAsyncTask
)を変更
うが良いでしょ?それは実現可能ですか? (。ユーザーは、クエリの実行中のアプリと相互作用しない)
私は現在、次のプライベートクラスがあります。
private class DatabaseOpenHelper extends SQLiteOpenHelper
private class LoadDatabase extends AsyncTask<Object, Integer, Void>
private class QueryDB extends AsyncTask<Object, String, Void>
をご入力が認識されるであろう。
EDIT
最初に以下の回答Service
を使用して動作することを示唆しています。
IntentService
を拡張するとGoogleの仕事は簡単になると私は思っています。
ANOTHER EDIT
はい、IntentService
は私がまさに必要です。 thisを参照してください。 AsyncTask
からIntentService
に変更するのはかなり簡単です。
- おねがいします。シリアルタスクOK。このコンテキストでスレッディングを使用する方法がわからない。いくつかのデスクトッププログラムでスレッドをうまく使用しているので、私はこのアプリケーションの 'service'を追求するために私を良い形にしていると思います。任意のチュートリアル/例を歓迎します。 – DSlomer64
私は[first](http://www.vogella.com/tutorials/AndroidServices/article.html)を試してみます。 [google team](http://developer.android.com/training/run-background-service/create-service.html)の完全な例(ダウンロード[ThreadSample.zip](http://developer.android .com/shareables/training/ThreadSample.zip)) –