0

我有下面的单例处理程序类

public class MyHandler
{
private static Handler handler;
private static boolean isRunning;

public static Handler getHandler(Runnable myRunnable)
{
    if (handler == null)
    {
        initHandler(myRunnable);
    }
    return handler;
}


private static void initHandler(Runnable myRunnable)
{
    handler = new Handler();
    isRunning = true;
    handler.postDelayed(myRunnable, 5000);
}

public static void reRunHandler(Runnable myRunnable)
{
    isRunning = true;
    handler.postDelayed(myRunnable, 45000);
}

public static void stopMyHandler()
{
    isRunning = false;
    handler.removeCallbacksAndMessages(null);
}
}

但是,如何从这里更新我的 UI?因为runnables在我的活动中。显然我不能使用 getHandleMessage 与之通信。

如果您需要更多代码,我如何使用它,我可以分享。

4

2 回答 2

1

这很简单:

new Handler(Looper.getMainLooper()).post(new Runnable() {           
    @Override
    public void run() {
        //do whatever you want on the UI thread
    }
});
于 2014-06-23T06:19:54.270 回答
0

Handle 具有用于此目的的功能:

private final Handler handler =  new Handler() {
    public void handleMessage(Message msg) {

        // here you can get data from Message and update your UI. runs in UI thread

    }
};

如果您要将带有数据的消息发送到您的处理程序,请使用以下代码:

Message m = new Message();
Bundle b = new Bundle();
b.putInt("myNumber", 5); // for example
m.setData(b);
myHandler.sendMessage(m);
于 2013-09-23T15:19:19.860 回答