2015-02-10 98 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文档中的示例)。

相关问题