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;

    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage