タスク(つまり、テキストファイルからデータをロードする)を非同期で繰り返し、指定された時間に(つまり、数秒ごとに)実行しようとしていますが、この速度は実行時に変更される可能性があります。
私はいくつかの調査を行い、これにはAsyncTaskまたは別のスレッドのいずれかが必要になると判断しました。簡単にするために、AsyncTaskを使用することにしました。
ここで、繰り返しタイマースケジュールに従ってこのAsyncTaskを実行する必要があります。私はTimerとTimerTaskを利用しなければならないと信じています。
以下のコードは、私が達成しようとしていることの単純な形式です。Androidエミュレーターを使用して(Eclipse IDEを介して)このコードを実行しようとすると、「申し訳ありませんが、アプリケーションが予期せず停止しました。もう一度やり直してください。」というメッセージが表示されます。
どこで問題が発生し、どうすれば修正できるのか知りたいのですが。ありがとう!
public class Sample extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SimpleTimerTask myTimerTask = new SimpleTimerTask();
long delay = 0;
long period = 5000;
Timer myTimer = new Timer();
myTimer.schedule(myTimerTask, delay, period);
}
private class SimpleAsyncTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
return null;
}
}
private class SimpleTimerTask extends TimerTask {
public void run() {
new SimpleAsyncTask().execute();
}
}
}
編集:関連していると思われるLogCatメッセージは次のとおりです
致命的な例外:タイマー-0
java.lang.ExceptionInInitializerError
で ...
原因:java.lang.RuntimeException:Looper.prepare()を呼び出していないスレッド内にハンドラーを作成できません
で ...