【问题标题】:sending messages with handlers without queue or delay使用处理程序发送消息而无需排队或延迟
【发布时间】:2012-09-19 20:06:16
【问题描述】:

我正在尝试使用处理程序将消息从一个线程发送到我的 UI 线程。我正在使用 pusher API (pusher.com) 发送消息。他们进来了,我可以看到他们进来的速度非常快,但是 UI 线程需要一段时间才能通过处理程序获取消息并将它们排队,而不是在有东西进来时立即发送和释放。

有没有更好的方法在没有处理程序的情况下执行此操作,或者有一种方法可以摆脱队列,以便在消息进入处理程序时立即处理它?

这是发送进入线程的消息

public void onEvent(String eventName, String eventData, String channelName) {

                  String sentence = new String(eventData); 
                  try {

                      Message msg = new Message();
                      Bundle b = new Bundle();
                      b.putString("message",sentence);
                      msg.setData(b);
                      // send message to the handler with the current message handler
                      mHandler.sendMessage(msg);
                           } catch (Exception e) {
                      Log.v("Error", e.toString());

                           }
                  Log.e("server Thread", eventData);
               // mHandler.obtainMessage(MakeLightActivity.PACKET_CAME,sentence).sendToTarget(); 


              }

这是我在 UI 线程中阅读它的地方

private final Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {



            Bundle b = msg.getData();
           String key = b.getString("message");
          incomingMessage =  key;
            if (key.length() >= 30){

                Log.d(TAG, "key" + key);
            messageCame(key);
            }

        }




};

【问题讨论】:

    标签: java android handler pusher


    【解决方案1】:

    是的,有更好的方法 您必须使用处理线程和处理程序功能的AsyncTask

    private AsyncTask<Params, Progress, Result> imageLoader = new AsyncTask<Params, Progress, Result>()
    {
        @Override
        protected Result doInBackground(Params)
        {
            // do the work and onPostExecute will handle the result
            return result; 
        };
    
        protected void onPostExecute(Result result)
        {
            // do whatever with the result on the UI thread instead of a Handler
        }
    
    };
    

    【讨论】:

    • 我在我的活动中使用它并在其中移动我在单独线程中的代码?
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多