2014-09-12 20 views
0

我在這的AsyncTask設置斷點,我不能夠調試這個AsyncTasc

我已經把android:debuggable="true"

和我已經加入android.os.Debug.waitForDebugger();

,但仍然在調試器(Eclipse中)將不會進入...

class DownloadWebpageTask extends AsyncTask<String, String, String> { 
@Override 
protected String doInBackground(String... urls) { 
    android.os.Debug.waitForDebugger(); 
    try { 
     Log.e("","Sono in doibacground di DownloadWebpageTask"); 
     return downloadUrl(urls[0]); 
    } catch (IOException e) { 
     return null; 
    } 
} 

這的AsyncTask由以下的AsyncTask

稱爲
public class DownloadGelaterieAsyncTask extends AsyncTask<Void, Void, ArrayList<Gelateria>> { 

    @Override 
    protected ArrayList<Gelateria> doInBackground(Void... params) { 
      try { 
       Log.e("i di doInBackground di DownloadGelaterieAsyncTask", Integer.toString(i)); 
       gelaterie = new DownloadWebpageTask() 
       .execute("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=45.4667,9.1833&radius=10000&language=Italian&keyword=gelateria&key=XXXXXXXXXXX" 
           ).get(); 

      } catch (Exception e1) {} 

我在做什麼錯?

+0

爲什麼'.get()'??? – 323go 2014-09-12 18:53:20

+0

@ 323go因爲我需要結果來進一步處理它 – 2014-09-12 18:57:47

+1

然後你擊敗了'AsyncTask'的目的。處理應該在'onPostExecute()'中完成。 – 323go 2014-09-12 19:14:28

回答

3

您在AsyncTask內打電話AsyncTask。這不會按原樣工作。所有AsyncTask都安排在同一個線程上,所以嵌套的AsyncTask將不會被執行,直到第一個完成 - 你只是鎖定你的應用程序。

只要重構你的第一AsyncTask如下:

public class DownloadGelaterieAsyncTask extends AsyncTask<Void, Void, ArrayList<Gelateria>> { 

    @Override 
    protected ArrayList<Gelateria> doInBackground(Void... params) { 
      try { 
       Log.e("i di doInBackground di DownloadGelaterieAsyncTask", Integer.toString(i)); 
       gelaterie = downloadUrl("https://..."); 

      } catch (Exception e1) {} 

沒有必要爲一個嵌套的AsyncTaskAsyncTask