Android activity的一些知识干货

我们知道,当用户在activity界面按下返回键、HOME键时,有的手机会将应用挂入后台运行,有的手机直接挂彩。

后者这种情况我们当然必须要避免的!!!

Android activity的一些知识干货

首先我们得知道关于activity一个方法

moveTaskToBack
这个方法是将前台的activity任务转到后台运行,不了解的可以自行百度看看。
那么我们监听home和返回键,拦截后调用moveTaskToBack方法。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
}else if (keyCode==KeyEvent.KEYCODE_HOME){
moveTaskToBack(true);
}
return false;
}
Android activity的一些知识干货

这个解决了,那么还有一些小问题。

如果这个时候我们想自己转回那个activity呢,将activity调到栈顶呢?

比如当点击通知栏回到activity、修改完信息回到个人资料activity等等,这个时候我们调用starActivity会重新创建一个新的activity。

这样的结果肯定不是我们想要的。

方法有两种:

一、在androidmanifest里activity加上android:launchMode="singleTask",作用是告诉系统对我这个activity启动的方法是单任务的,如果窗口已经存在,就不再创建,直接回到activity。

这种方法可行,但不推荐,在有的手机上,按下back和home键直接销毁了,拦都拦不住!!!

二、这种方法原理同上,结果也是一样的,但是就没有那个问题了

Intent intent2 = new Intent(context.getApplicationContext(), Main2Activity.class);

intent2.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

context.startActivity(intent2);

Android activity的一些知识干货


分享到:


相關文章: