单位网站维护 网站建设岗位,兰溪网站建设公司,本地wordpress安装,云南营销型网站android的手机的back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态#xff0c;再次启动该Activity是从onCreate开始的。 而Home键默认是stop前台的Activity即状态为onStop而不是Destroy,若再次启动它#xff0c;则是从OnResume开始的#xff0c;即会… android的手机的back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态再次启动该Activity是从onCreate开始的。 而Home键默认是stop前台的Activity即状态为onStop而不是Destroy,若再次启动它则是从OnResume开始的即会保持上次Activityd的状态。 back键也有例外的按back键不会关闭Activity的比如播放音乐按了back键之后仍可以继续播放音乐这是Music这支ap已经重写了back键的事件处理。 为什么需要Home键和Back键呢一个使得Activity 为Stop一个使得为Destroy呢我想原因的原因在于是android也是一个多任务的操作系统通过Home键切换不同的任务而通过back关闭任务中的某一个活动。 back键【退出销毁】 按back键会让当前activity调用onDestroy并消亡且不调用onSaveInstanceState(Bundle)。 默认情况下按back键Activity会调用finish()。finish()的调用是在Activity的onBackPressed()你可以重载它来自定义back键的行为。 因为调用finish()已经明确说明要结束当前Activity所以就没必要调用onSaveInstanceState(Bundle)保存的Bundle数据。
当此Activity再次启动起来的时候会重新调用OnCreate()方法进行创建。 home键【退出不销毁】 当按下手机的Home键的时候系统会默认调用栈中最上层Activity的OnStop()方法然后整个应用程序都会被隐藏起来当再次启动程序的时候系统会调用最上层Activity的OnResume()方法直接显示栈中最上层的Activity。 一按返回键实现home键效果按返回键不销毁当前Activity
法一moveTaskToBack不销毁 Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode KeyEvent.KEYCODE_BACK){ moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); } 法二按BACK跳转到Home界面的代码即可相当于按下home键。 Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode KeyEvent.KEYCODE_BACK){ Intent i new Intent(Intent.ACTION_MAIN); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addCategory(Intent.CATEGORY_HOME); startActivity(i); return true; } return super.onKeyDown(keyCode, event); } 法三重写onBackPressed()方法里修改 Override public void onBackPressed() { //实现Home键效果 //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了 Intent i new Intent(Intent.ACTION_MAIN); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addCategory(Intent.CATEGORY_HOME); startActivity(i); } 二home键实现back键行为和生命周期
情况一按home键如果被销毁原本不应该销毁的
办法activity配置里加上android:taskAffinity.taskCall这个 这样按home键的时候就不会被销毁
情况二按home键实现销毁想销毁
Activity设置启动模式android:launchModesingleInstance 按home键后会销毁
情况三home模拟back按键 new Thread(new Runnable() { Override public void run() { try { Instrumentation inst new Instrumentation(); inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); } catch (Exception e) { e.printStackTrace(); } } }).start();