歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中模擬HOME鍵功能

Android中模擬HOME鍵功能

日期:2017/3/1 10:24:02   编辑:Linux編程

做一個類似於QQ按返回鍵並不銷毀Activity的方法(即不調用Activity.finish(),系統不調用 onDestroy),而是類似於按Home鍵,讓Activity類似於“暫停”(即只調用onPause,onDestroy)。

代碼如下:

  1. public boolean onKeyDown(int keyCode, KeyEvent event) {
  2. if(keyCode == KeyEvent.KEYCODE_BACK){
  3. Intent intent = new Intent(Intent.ACTION_MAIN);
  4. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 注意
  5. intent.addCategory(Intent.CATEGORY_HOME);
  6. this.startActivity(intent);
  7. return true;
  8. }
  9. return super.onKeyDown(keyCode, event);
  10. }

特別注意 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 這句,一定要加上,因為Activity 的 launchMode 默認是以 standard 執行的,如果不添加這個標記則會創建新的Activity 並放在與當前Activity相同的Task中。以下是 FLAG_ACTIVITY_NEW_TASK 的說明 FLAG_ACTIVITY_NEW_TASK標記

當傳遞給startActivity()的Intent對象包含FLAG_ACTIVITY_NEW_TASK標記時,系統會為需要啟動的 activity尋找與當前activity不同的task。如果要啟動的activity的affinity屬性與當前所有的task的 affinity屬性都不相同,系統會新建一個帶那個affinity屬性的task,並將要啟動的activity壓到新建的task棧中;否則將 activity壓入那個affinity屬性相同的棧中。

Copyright © Linux教程網 All Rights Reserved