Android 如果此活动在特定持续时间内没有事件,则启动另一个活动

Android 如果此活动在特定持续时间内没有事件,则启动另一个活动,android,Android,在我的应用程序中,我有两个活动:主活动和广告活动。 在我的主要活动中,如果在主要活动的特定持续时间(例如5秒)内没有事件(按钮单击、列表视图单击、输入文本等),我希望启动Ads活动。 此代码在5秒后启动Ads活动,但如果有事件发生,我想延迟它 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activit

在我的应用程序中,我有两个活动:主活动和广告活动。
在我的主要活动中,如果在主要活动的特定持续时间(例如5秒)内没有事件(按钮单击、列表视图单击、输入文本等),我希望启动Ads活动。
此代码在5秒后启动Ads活动,但如果有事件发生,我想延迟它

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(MainActivity.this,AdsActivity.class);
            MainActivity.this.startActivity(intent);
        }
    },5000);

}

那么我该怎么做呢?

在事件发生时从处理程序中删除回调并发布新的runnable。像这样的方法应该会奏效:

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            handler = new Handler();
            postAdAfterDelay();
        }

        // Call this method when a valid event occurs
        private void onEventOccurred() {
            handler.removeCallbacksAndMessages(null);
            postAdAfterDelay();
        }

        private void postAdAfterDelay() {
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent intent = new Intent(MainActivity.this,AdsActivity.class);
                    MainActivity.this.startActivity(intent);
                }
            },5000);
        }

尝试以下方法重新启动事件的5秒计时器:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    handler = new Handler();
    runnable = new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(MainActivity.this,AdsActivity.class);
            MainActivity.this.startActivity(intent);
        }
    };
    handler.postDelayed(runnable, 5000);
}

private void onYourEvent() {
    handler.removeCallbacks(runnable);
    handler.postDelayed(runnable, 5000);
}

那么你的问题是什么?