首页 > 解决方案 > Java 处理程序如何在不发送 onUserInteraction 方法的情况下执行意图

问题描述

我想在一段时间后从主要意图执行另一个意图,并且当我关闭另一个意图以重新执行处理程序时。

我的问题是,由于某种原因执行第二个意图后,程序认为它的 onUserInteraction 方法并重新执行处理程序。

主要意图:

 handler = new Handler();
 r = new Runnable() {

 @Override
 public void run() {
 // TODO Auto-generated method stub
 intent = new Intent(DataChecker.this, IdleImages.class);
 startActivity(intent);
     }
   };
 startHandler();
  }
    @Override
    public void onUserInteraction() {
        // TODO Auto-generated method stub
        super.onUserInteraction();
        stopHandler();//stop first and then start
        startHandler();
    }
    public void stopHandler() {
        handler.removeCallbacks(r);
    }
    public void startHandler() {
        handler.postDelayed(r, 1*60*1000);
    }

第二个意图:

@Override
public void onSliderClick(SliderView sliderView) {
 Intent intent = new Intent();
 setResult(2, intent);
 finish();
}

当第二个意图关闭时,它应该重新启动计时器。

标签: javaandroidandroid-intent

解决方案


我通过使用两个事件来修复onResume()onPause()

    @Override
    public void onPause () {
        super.onPause();
        Log.e("Yes", "I stoped the handler for you");
        stopHandler();
    }
    @Override
    public void onResume() {
        super.onResume();
        Log.e("Back", "I started the handler for you");
        stopHandler();
        startHandler();
    }

推荐阅读