我有一些活动(比如A& B),从一个活动中,我使用Handler-post延迟方法调用另一个活动。
我的逻辑在App中,从活动A开始,3秒后进入活动B &3秒后,它就完美地工作了。
问题是,我在seconds.And期间设置了三个的时间延迟--这3秒,如果我单击home按钮,它就会变成背景,并且在指定的3秒时间之后,应用程序将返回到前台并显示下一个活动。
try {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
finish();
Intent i = new Intent(Asplash.this, Example.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);
}
}, 3000);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
handler.removeCallbacksAndMessages(null);
finish();
return super.onKeyDown(keyCode, event);
}我正在使用这样的代码,处理程序期间的back按钮运行良好,应用程序完全处于后台状态。,但如果我按下主页按钮,它最初进入后台,在处理程序时间(3000)完成后,应用程序就开始出现了。我希望它是在背景下,只有在我按下主页按钮也。
请建议me>
发布于 2013-03-06 09:46:49
从onResume()方法中提取start处理程序,如下所示:
@Override
public void onResume() {
try {
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
Intent i = new Intent(Asplash.this, Example.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);
}
}, 3000);
} catch (Exception e) {
e.printStackTrace();
}
}并删除onPause()中的句柄,如:
@Override
public void onPause() {
handler.removeCallbacksAndMessages(null);
super.onPause();
}这将确保启动其他活动,即使您在3秒钟内按home键。
https://stackoverflow.com/questions/15243407
复制相似问题