Asynctask DoInBackground () wird in Android Tablet nicht aufgerufen
Arbeiten an einer App in Android Ich habe die Asynctask-Klasse verwendet. Funktioniert einwandfrei, wenn ich auf meinem Android-Gerät getestet habe, auf dem 2.3.5 ausgeführt wird, aber das Problem, dem ich gegenüberstehe, ist, dasselbe gilt nicht für mein Tablet 4.0.4
Beim Testen wurde festgestellt, dass prexecute () aufgerufen wird, doInbackground () jedoch nicht, doInbackground () jedoch auf device (2.3.5) aufgerufen wird.
Einer der Gründe, warum ich glaube, dass das Problem darin besteht, dass der Prozessor des Tablets viel schneller ist als der des Geräts, daher kann es zu Threading-Problemen kommen. Deshalb habe ich einige Flags und Thread.sleep () verwendet. in einer do while-Schleife, so dass, wenn Bedingung wahr ist, es funktioniert, aber kein Glück, ich bin in der Schleife selbst stecken. Hier ist mein Code:
MyAsyncTask object = new MyAsyncTask (MainActivity.this);
runOnUiThread(new Runnable() {
public void run() {
try {
if (object.isReady() || !object.isStarting()) {
return;
}
object.execute();
do {
Thread.sleep(1000);
} while (!object.isReady() && object.isStarting());
if(!object.isReady()) {
return;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
AsynctaskClass:
public class MyAsyncTask extends AsyncTask<Void, Void, Boolean>{
private ProgressDialog dialog;
private Context context;
private boolean isStarting = false;
private boolean isReady = false;
public AsyncUpdatesofJquery(Context context) {
this.context = context;
isStarting = true;
isReady = false;
}
public boolean isStarting() {
return isStarting;
}
public boolean isReady() {
return isReady;
}
@Override
protected void onPreExecute() {
isStarting = true;
isReady = false;
dialog = new ProgressDialog(context);
dialog.setMessage("Downloading Files, Please wait...");
dialog.show();
}
@Override
protected Boolean doInBackground(Void... params) {
isReady = true;
isStarting = false;
downloadFiles(context); // my background task
return true;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
context.startActivity(new Intent(context, NewActivity.class));
dialog.dismiss();
isReady = false;
isStarting = false;
}
}