2016-10-26 112 views
0

我在我的Service類中使用一個Handler來完成一些後臺工作,但是當它完成時,我必須在Service的線程上執行一些代碼。這裏是我的代碼:如何從服務啓動的處理程序跳轉到服務的線程?

我在Service的onCreate方法中創建一個處理程序。

HandlerThread handlerThread = new HandlerThread(getPackageName()); 
    handlerThread.start(); 
    Looper looper = handlerThread.getLooper(); 
    mHandler = new Handler(looper); 

我如何使用處理程序。這個方法在會話中被調用了幾十次。

mHandler.post(new Runnable() { 
     @Override 
     public void run() { 
       // It takes a few seconds to execute this method, 
       // so it must be running on a separate thread. 
       Object o = superMethod(); 

       // However, this MUST be called from the Service's thread. 
       useObject(o); 
     } 
    };) 

那麼我該如何回到服務的線程呢?

+0

默認情況下,服務在主線程上運行,即Android中的UI線程,因此您可以使用runOnUiThread()方法。 – Rahul

+0

它不會繼承任何種類的runOnUiThread()方法。據我所知,只有活動有這種方法。 – MisterCereal

回答

0

服務本身在主線程上運行,您希望從處理程序線程(後臺線程)切換到服務(主線程)。

Handler handler = new Handler(getMainLooper()); 
     handler .post(new Runnable() { 
      @Override 
      public void run() { 
       // do your main thread task here 
      } 
     }); 
+0

這工作!謝謝你的協助! :) – MisterCereal

+0

你可以請出答案。 –