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);
}
那么你的问题是什么?