2012-10-05 79 views
0
1. Looper.prepare(); 
2. Handler mHandler = new Handler() { 
3. public void handleMessage(Message msg) {} 
4. }; 
5. mHandler.post(gpsLocationListenerThread); 
6. Looper.loop(); 
7. 

我打電話給AsyncTaskThread類。當我使用1-6代碼調用它時,它會創建Thread並運行它。但AsyncTask得到了滿足。我需要運行另一個Thread而不會阻止我的AsyncTask。如何使它發生?如何退出活套?

public GPSLocationListenerThread(Context context){ 
    this.context = context; 
    mlocManager = (LocationManager)context.getSystemService(context.LOCATION_SERVICE); 
    mlocListener = new GPSLocationListener(); 
} 

public void setHandler(Handler _h){ 
    this.mHandler = _h; 
} 

public void run(){ 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 100, mlocListener); // in 1000 mseconds or in 100m change 
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 100, mlocListener); // in 1000 mseconds or in 100m change 
    //mHandler.getLooper().quit(); 
    while (DataHolder.getDataHolderObject().isTripStarted()){ 
     try { 
      this.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
    mlocManager.removeUpdates(mlocListener); 
}     
+0

9倍於10無需從AsyncTask調用線程您想要做什麼? – njzk2

+0

我需要啓動GPS位置監聽器取決於其他一些變量轉換器。 AsyncTask正在聆聽這些轉換器。但GPS Litener無法從AsncTask啓動。 – dinesh707

+0

如果你退出looper,你的線程將被停止。 – Yury

回答

0

那麼你需要調用Looper.quit();無論如何,它永遠不會退出。你需要給我打電話的地方我不知道,除非你發佈更多的代碼:)

+0

我試圖在第7行調用它,但我認爲它不會移動到第7行,直到線程結束。 – dinesh707

+0

你可以發佈gpsLocationListenerThread類嗎?或者至少它的一部分,如果它是保密的 –

+0

我添加了整個班級。我已經評出了一條我厭倦的路線。但它沒有工作 – dinesh707

0

與文檔相反,並不總是需要退出活頁夾。
如果你堅持 - 你必須把它放在鉤子的同一個線上。
請看我詳細的回答here