私のアプリで簡単なアニメーションを行うにはASyncTask
を使用しています。しかし、それはちょうどクラッシュし、私は間違ったスレッドからUIを編集すると言う以下、Android 5.0以上で動作します。ここに私のコードは次のとおりです。Android ASyncTask Android 4以降でクラッシュする
private class AlphaCorrect extends AsyncTask<Integer, Integer, Integer> {
float alpha;
@Override
protected Integer doInBackground(Integer[] params) {
Log.i("back","running");
for (float i = 0.0f; i < 0.9; i += 0.02) {
alpha = i;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Update();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (float i = 0.8f; i > -0.1f; i -= 0.02) {
alpha = i;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Update();
}
return null;
}
@Override
protected void onPreExecute() {
Log.i("run", "RUN");
canClick = false;
}
@Override
protected void onPostExecute(Integer result) {
canClick = true;
}
protected void Update() {
correct.setAlpha(alpha);
}
}
私はすでに、Runnable
を試しThread
といくつかの他のもの。何か案は?
logcatお願いしますか?正確なエラーメッセージを表示します。 –
Android 5.0以上でどのように動作したのだろうか。実際には、main以外のスレッドからUIを使って何もすることはできません。 *メインスレッド*にRunnableをポストするだけで(システムがコールバックを提供しない場合)、UIを更新する必要があるときはいつでも。 – frangulyan