【问题标题】:Changing the UI from a singleton handler class从单例处理程序类更改 UI
【发布时间】:2013-09-28 13:24:33
【问题描述】:

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

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);
}
}

但是,如何从这里更新我的用户界面?因为runnables在我的活动中。显然我无法使用 getHandleMessage 与之通信。

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

【问题讨论】:

    标签: android handler runnable ui-thread android-handler


    【解决方案1】:

    很简单:

    new Handler(Looper.getMainLooper()).post(new Runnable() {           
        @Override
        public void run() {
            //do whatever you want on the UI thread
        }
    });
    

    【讨论】:

      【解决方案2】:

      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);
      

      【讨论】:

      • true,但是,这是一个单例类(如您所见),它在与 UI 不同的线程上运行在可运行文件中。我应该在哪里/如何实现它?
      • 在定义 Handler 字段的地方实现 handleMessage 方法
      • 好的,但是我不认为我可以在那里进行网络活动。
      • 你会在那里进行网络活动还是更新 UI?请选择:)
      • 如何在那里进行网络活动?它运行在 UI 线程上,网络调用会抛出异常。我试过了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2012-10-20
      • 2013-08-02
      相关资源
      最近更新 更多