0

我正在尝试使用处理程序将消息从一个线程发送到我的 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);
            }

        }




};
4

1 回答 1

0

Yes there's a better way You must use an AsyncTask which handles the thread and the Handler's functionality.

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
    }

};
于 2012-09-19T20:17:26.260 回答