Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式

分类: Android开发技巧点滴   1270人阅读  评论(1)  收藏  举报 [java]  view plain copy print ?
  1. @Override  
  2.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  3.         if (keyCode == KeyEvent.KEYCODE_BACK) {  
  4.             moveTaskToBack(false);  
  5.             return true;  
  6.         }  
  7.         return super.onKeyDown(keyCode, event);  
  8.     }  

里面的moveTaskToBack()是关键。   转自: http://blog.csdn.net/android_xiaoqi/article/details/8769327    

Android moveTaskToBack()方法实现手动隐藏当前Activity

分类: Android UI   579人阅读  评论(0)  收藏  举报

moveTaskToBack()方法:在activity中调用 moveTaskToBack (boolean nonRoot)方法即可将activity 退到后台,注意不是finish()退出。

参数说明:

参数为false——代表只有当前activity是task根,指应用启动的第一个activity时,才有效;

参数为true——则忽略这个限制,任何activity都可以有效。

说明:判断Activity是否是task根,Activity本身给出了相关方法:isTaskRoot()

 

moveTaskToBack调用后,task中activity的顺序不会发生变化,例如A启动B,B中调用此方法退到后台,重新启动应用会调用B中的onRestart-onStart-onResume方法,不会重新调用onCreate,而且在B中按下back键返回的还是A,这就是退到后台的功能。


另外在activity中按下back键,实际是调用了finish方法,应用退出。虽然应用已经退出,但进程没有被杀死,android中一个应用运行于独立的一个虚拟机实例中,所以在重新启动应用时一个类中的静态对象还保持着运行时的状态,注意在合适位置复位这些状态。


关于moveTaskToBack 方法,官方API解释如下:

public boolean moveTaskToBack (boolean nonRoot)
Since: API Level 1Move the task containing this activity to the back of the activity stack. The activity's order within the task is unchanged.

Parameters
nonRoot If false then this only works if the activity is the root of a task; if true it will work for any activity in a task.

Returns
If the task was moved (or it was already at the back) true is returned, else false.

 

贴上测试代码:

[java]  view plain copy
  1. "font-size:14px;">import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.util.Log;  
  4. import android.view.View;  
  5. import android.view.View.OnClickListener;  
  6. import android.widget.Button;  
  7.   
  8. public class MainActivity extends Activity {  
  9.     private Button tv;  
  10.       
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.         tv = (Button) findViewById(R.id.test);  
  16.         tv.setOnClickListener(new OnClickListener() {  
  17.             @Override  
  18.             public void onClick(View v) {  
  19.                 /** 
  20.                  * 会调用:onPause()和onStop() 
  21.                  */  
  22.                 moveTaskToBack(true);  
  23.                 Log.e("====""点击运行了moveTaskToBack()方法");  
  24.             }  
  25.         });  
  26.     }  
  27.   
  28.     @Override  
  29.     protected void onPause() {  
  30.         Log.e("====""onPause()");  
  31.         super.onPause();  
  32.     }  
  33.   
  34.     @Override  
  35.     protected void onStop() {  
  36.         Log.e("====""onStop()");  
  37.         super.onStop();  
  38.     }  
  39.   
  40.     @Override  
  41.     protected void onDestroy() {  
  42.         Log.e("====""onDestroy()");  
  43.         super.onDestroy();  
  44.     }  
  45.   
  46.     @Override  
  47.     protected void onResume() {  
  48.         Log.e("====""onResume()");  
  49.         super.onResume();  
  50.     }  
  51.       
  52.     @Override  
  53.     protected void onStart() {  
  54.         Log.e("====""onStart()");  
  55.         super.onStart();  
  56.     }  
  57.   
  58.     @Override  
  59.     protected void onRestart() {  
  60.         Log.e("====""onRestart()");  
  61.         super.onRestart();  
  62.     }  
  63. }  
  64.   


运行一下:

01-13 00:19:45.179: E/====(3801): 点击运行了moveTaskToBack()方法
01-13 00:19:45.199: E/====(3801): onPause()
01-13 00:19:45.662: E/====(3801): onStop()


更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android 编写简单浏览器带下载
  5. Android(安卓)调用手机系统照相机拍照
  6. Android下调用收发短信邮件等
  7. Android(安卓)onSaveInstanceState和onRestoreInstanceState触发
  8. 如何打造一个 Android(安卓)编译时注解框架
  9. Android(安卓)NFC架构分析

随机推荐

  1. android轻量框架四__滑动手势
  2. TextView 部分字符高亮 android
  3. android --拍照相册选取图片[兼容小米等
  4. Android中AppWidget加载流程(二)
  5. 【Android】Vitamio 4.0 正式版发布/ Vit
  6. 个人android工具包——androidkit更新
  7. android HAL层
  8. android安全:flag FLAG_RECEIVER_REGISTER
  9. 安装、卸载和运行程序
  10. Android(安卓)手机sdcard目录或文件的拷