代码之家  ›  专栏  ›  技术社区  ›  Kristy Welsh

未调用处理程序handleMessage

  •  1
  • Kristy Welsh  · 技术社区  · 6 年前

    我正在运行一个简单的处理程序,即使在处理handler.sendMessage()时,也不会调用handleMessage方法。

    protected static class TimeoutHandler extends Handler {
        private final WeakReference<PROQuestion> activity;
    
        public TimeoutHandler(PROQuestion activity) {
            this.activity = new WeakReference<PROQuestion>(activity);
        }
    
        @Override
        public void handleMessage(Message msg) { //never gets called
            boolean firstScreen = true;
            if (activity.get() == null) {
                removeCallbacksAndMessages(0);
            } else {
                Intent startNewActivityOpen = null;  
                startNewActivityOpen = new Intent(activity.get(), Home.class);
    
                startNewActivityOpen.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                Bundle bundle = activity.get().getIntent().getExtras();
                if (bundle != null) startNewActivityOpen.putExtras(bundle);
                activity.get().startActivity(startNewActivityOpen);
    
                activity.get().finish();
       }
     }
    

    我正在调用onCreate()主线程上的处理程序:

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TimeoutHandler handlerTimeout = new TimeoutHandler(this);
    
       if (handlerTimeout != null) {
            removeTimeout();
            Message message = handlerTimeout.obtainMessage();
            message.what = 100;
            handlerTimeout.sendMessage(message);
            //handlerTimeout.sendMessageAtTime(message, SystemClock.uptimeMillis() + GlobalVars.longTimeout);
        }
        if (handlerTimeout.hasMessages(100)) { //returns true
            Log.d(getClass().getSimpleName(),"messages found");
        }
     }
    

    0 回复  |  直到 6 年前