2015-02-10 63 views
0

我對Android很新,但在Handler上有問題。我們可以在Android的非活動類中調用處理程序嗎?

我有一個工作線程它運行在非活動類。我希望工作線程處理一些後臺任務,同時我也想在非活動類上做其他工作。但是,處理程序根本不起作用。有沒有其他解決方案?這裏是我是如何實現:

public class NonActivity { 

    private WorkerThread mWorkerThread = null; 

    private Handler mHandler = new Handler(){ 

     //why the message never come here????? 
    } 

    //constructor 
    public NonActivity() 
    { 
     //call worker thread from non-activity class 
     mWorkerThread = new WorkerThread(); 
    } 
} 

私有類的WorkerThread繼承Thread {

public void run() { 

     //call sendMessageToMainThread 
     sendMessageToMainThread(); 
    } 

    private void sendMessageToMainThread() { 
     mHandler.sendMessage(put message here);  
    } 
} 
+0

使用[的AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html),而不是 – hrskrs 2015-02-10 13:37:26

+0

您可以創建一個主尺蠖的處理程序。 http://developer.android.com/reference/android/os/Looper.html#getMainLooper%28%29 Handler handler = new Handler(Looper.getMainLooper()); – Christopher 2015-02-10 13:38:34

回答

0

處理程序需要一個looper運行在線程鉤子連接到的消息。默認情況下,處理程序在當前線程中使用looper,但如果線程沒有looper,則需要提供顯式looper。您可以使用the main looper或在單獨的線程中創建您自己的(請參閱looper文檔中的示例)。

相關問題