Ich verwende , um einfache Animation in meiner App zu tun. Aber es funktioniert nur auf Android 5.0+, darunter stürzt es einfach ab und sagt, dass ich UI aus dem falschen Thread bearbeite. Hier ist mein Code:Android ASyncTask Absturz auf Android 4 und niedriger
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);
}
}
Ich versuchte Runnable
, Thread
und einige andere Dinge schon. Irgendwelche Ideen?
logcat bitte? genaue Fehlermeldung anzeigen –
Ich frage mich, wie es bei Android 5.0 + funktioniert. Sie dürfen tatsächlich nichts mit UI von einem anderen Thread als main aus tun. Wann immer Sie die UI aktualisieren müssen, geben Sie einfach einen Runnable auf * main thread * ein (wenn das System keinen Rückruf für Sie bereitstellt). – frangulyan