【问题标题】:Back Button Does Not Stop Handler后退按钮不停止处理程序
【发布时间】:2016-10-26 20:03:10
【问题描述】:

我有一个运行以下内容的活动:

    private void loop() {
            // TODO Auto-generated method stub

            handler.postDelayed(new Runnable() { 
            public void run() { 

            DBListern(); 
            handler.postDelayed(this, 5000);
        }
    }, 5000); 

}

我想取消后退按钮上的这个句柄:

    public boolean onBackPress(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        handler.removeCallbacksAndMessages(null);

        return true;

    }

    return super.onKeyDown(keyCode, event);

}

按下后退按钮后处理程序仍在运行,我该如何停止它?

【问题讨论】:

标签: android


【解决方案1】:

公共类 MainActivity 扩展 AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    loop();
}

private void loop() {
    // TODO Auto-generated method stub

    handler.postDelayed(new Runnable() {
        public void run() {

           Log.i(TAG,"run");
            handler.postDelayed(this, 5000);
        }
    }, 5000);

}

Handler handler = new Handler();

@Override
public void onBackPressed() {
    super.onBackPressed();
    handler.removeCallbacksAndMessages(null);
}

}

这对我有用。

【讨论】:

    【解决方案2】:

    你需要这样做:

    @Override
    public void onBackPressed() {
        if(mHandler!=null){
            mHandler.removeCallbacks(mRunnable);
        }
        super.onBackPressed();        
    }
    

    原因:您需要手动从Handler onBackPress 中移除Runnable 的回调。

    希望这会对你有所帮助。

    【讨论】:

      【解决方案3】:

      对于删除的处理程序消息,您需要在方法参数中设置 not null。它必须对对象或消息类型进行分析,你想删除什么。为什么你做这个检查 if (keyCode == KeyEvent.KEYCODE_BACK) {

      真的需要吗?

      【讨论】:

      【解决方案4】:

      首先,您要查找的方法的正确名称是onBackPressed()。所以你的代码根本不会被框架调用。试试

      @Override
      public void onBackPressed() {
          handler.removeCallbacksAndMessages(null);
      
          super.onBackPressed();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        相关资源
        最近更新 更多