我有4个课程,
点击FirstActivty
中的按钮,我会随机进入其余三项活动。
例如,在下面的代码中,我来到Play3.class
...我已设置then处理程序运行3秒。
我的问题是在run()
3秒的时间内,如果我点击backButton
,它将转到FirstActivity.class
,并且在run()
时间的3秒之后,它会转到随机循环(Play_1
,Play_2
,Play_3
)。现在,我只想在点击FirstActivity.class
时永久转到backButton
。我该怎么办?
(注意:完成run()
时间为3秒后,我很高兴进入主屏幕。但是,在那个run()
时间内我只想中断循环然后回到主页屏幕。)
class listener implements OnClickListener {
@Override
public void onClick(final View v) {
switch (v.getId()) {
case R.id.play3_image1:
bt1.setVisibility(View.GONE);
bt2.setVisibility(View.GONE);
bt3.setVisibility(View.GONE);
bt4.setVisibility(View.GONE);
bt5.setVisibility(View.GONE);
bt6.setVisibility(View.VISIBLE);
try {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Random rand = new Random();
int x = rand.nextInt(3) + 1;
Intent intent = new Intent();
switch (x) {
case 1:
intent.setClass(v.getContext(), Play_1.class);
break;
case 2:
intent.setClass(v.getContext(), Play_2.class);
break;
case 3:
intent.setClass(v.getContext(), Play_3.class);
break;
default:
break;
}
startActivity(intent);
}
}, 3000);
} catch (Exception e) { e.printStackTrace(); }
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ){
Intent i = new Intent(Play_3.this,Example.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
return super.onKeyDown(keyCode, event);
}
}
}
答案 0 :(得分:1)
Handler对象提供了其他可以帮助您的帖子方法:
postAtFrontOfQueue(Runnable r)
,您可以发布可在下一个循环中执行的runnable。removeCallbacksAndMessages(Object token)
,您可以删除给定的可运行或消息,或使用null
参数清除处理队列。使用这些实用程序,您应该能够轻松处理状态chanes。
注意:由于您使用的是主线程循环器,因此不应在您的处理程序对象上调用getLooper()。quit(),因为这会停止您的应用程序(如果没有完全崩溃)。