1
アクティビティの変数を1秒に1回更新したいと思います。そのために、Asyncタスクとその内部の実行可能ファイルを使用しています。このエラーは、「別のメソッドで定義された内部クラスの内部でmyRunnable以外の変数を参照することはできません」と表示され続けます。宣言をfinalに変更すると、「ローカル変数myRunnableが初期化されていない可能性があります」というメッセージが表示されます。どのように私はエラーを修正するのですか?私がしたいことをやるよりよい方法はありますか?Android:非同期タスクで実行可能ファイルを使用するとエラーが発生する
import android.os.AsyncTask;
import android.os.Handler;
public class Timer extends AsyncTask<String, Process, Void>{
static int seconds=0;
TimerTask timer;
static int minutes=0;
static int hours=0;
private String timeTaken;
public Handler myhandler = new Handler();
@Override
protected Void doInBackground(String... params) {
final Runnable myRunnable = new Runnable() {
@Override
public void run() {
......
......
......
myhandler.postDelayed(myRunnable, 1000);
}
};
return null;
}
私は自分のonCreateメソッドでstartPeriodicUpdatesを呼び出す使用しています。私は戻るボタンを押して、もう一度エミュレータでアプリを開いたときしかし、のonCreateが再び呼び出されますどうすればいいですか? – hektor
戻るボタンを押すと、確実にonDestroyが呼び出されます(GoogleのdのAndroid Activity Lifecycleグラフを参照)。 ocumentation)。私はあなたのonDestroyメソッドでstopPeriodicUpdates()を呼び出すと仮定しますか?それ以外の場合、startPeriodicUpdates()メソッドは、誰かがあなたのアプリを初めて読み込んだときに呼び出されるだけで、後で(つまり、誰かがあなたのアプリケーションを閉じてからもう一度開いたときに)呼び出されない場合は、あなたのアプリケーションの状態をSharedPreferencesオブジェクトのようなもっと永続的なものにする – epichorns