2016-08-11 4 views
-1

Der Versuch, AsyncTask zum ersten Mal zu implementieren. Wenn ich die App zum ersten Mal starte, funktioniert es und der Ladedialog wird angezeigt (obwohl der Spinner nicht!), Aber viele andere Zeiten, wenn ich die Aktivität starte, friert die App für Sekunden (Laden im Hintergrund) ohne offensichtlichen ProgressDialog oder die aufgerufene Aktivität, die bedeutet, dass AsyncTask nicht funktioniert. Hier ist mein CodeAsyncTask funktioniert manchmal und manchmal nicht

private class PrepareFragments extends AsyncTask<Void, Void, ArrayList<Cursor>> { 

    ProgressDialog pd; 
    ArrayList<Cursor> cursors; 

    @Override 
    protected void onPreExecute() { 
     Log.d("onPre : ", "true"); 

     pd = new ProgressDialog(CategoryDrugs.this); 
     pd.show(); 
     pd.setMessage("Loading..."); 
     pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     pd.setProgress(0); 
     pd.setMax(100); 

    } 

    @Override 
    protected ArrayList<Cursor> doInBackground(Void ... arg) { 
     Log.d("doInBG : ", "true"); 

     // my custom code here 

    } 


    @Override 
    protected void onProgressUpdate(Void... values) { 
     pd.incrementProgressBy(1); 
    } 

    @Override 
    protected void onPostExecute(ArrayList<Cursor> cursor) { 
     Log.d("onPost : ", "true"); 

     if (pd.isShowing()) { 
      pd.dismiss(); 
     } 
    } 


} 
+1

Wo sehen Sie Ihre Aufgabe aync – MRX

+0

innerhalb onCreate() beginnen .... hier ist der Code "neue PrepareFragments(). Execute (); " – Bialy

+0

Haben Sie Ihre Datenbank in' doInBackgournd'-Methode geschlossen? –

Antwort

0

Wenn Ihr doInBackground sehr schnell ausführt, kann es sein, dass Dialog wird nicht angezeigt, oder einfach nur blinken. + Rufen Show im letzten

pd = new ProgressDialog(CategoryDrugs.this); 
pd.setMessage("Loading..."); 
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
pd.setProgress(0); 
pd.setMax(100); 
pd.show(); 
+0

Das Problem ist nicht mit dem Dialog überhaupt. Die übergeordnete Aktivität benötigt lange Zeit, bevor die Zielaktivität angezeigt wird. – Bialy

+0

Bitte überprüfen Sie, ob Sie eine Menge Dinge in onCreate tun – Ramit

0

Versuchen Testamentsvollstrecker mit

new PrepareFragments().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
+0

Funktioniert immer noch nicht – Bialy

Verwandte Themen