[Android] Android 學習筆記:避免讓程式因為按下 Back 鍵而關閉
通常按下 Back 後退鍵的時候,
如果程式有開別的 activity 的話,就會回到前一個 activity 去~
但如果現在已經在程式剩下的最後一個 activity 了,再按下 back 鍵就會關掉這個程式…
如果不想要自己的程式這麼容易就被關掉,該怎麼辦呢?
一個簡單的方法是去覆寫 onKeyDown() 這個函式,
當發現按下的按鍵是 back 鍵時,作一些處理就可以了~
常見的處理有彈出一個視窗問使用者是否確定關閉,
或是用一個 Toast 告知使用者連按兩下 back 鍵來確定關閉程式~
以下的範例程式是在按下 back 鍵時,直接回到 home 主螢幕,
效果跟直接按下 Home 鍵是類似的,
當再點下 app 的圖示的時候,原本的程式畫面就會再顯示出來,
不會開一個新的 app 實體出來~
import android.app.Activity;
import android.content.Intent;
import android.view.KeyEvent;
import com.my.R;
public class MyActivity extends Activity {
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK)
{
// Show home screen when pressing “back” button,
// so that this app won’t be closed accidentally
Intent intentHome = new Intent(Intent.ACTION_MAIN);
intentHome.addCategory(Intent.CATEGORY_HOME);
intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentHome);
return true;
}
return super.onKeyDown(keyCode, event);
}
}
2 thoughts on “[Android] Android 學習筆記:避免讓程式因為按下 Back 鍵而關閉”
感謝大大的分享
正在寫遊戲的我正好遇到此問題=]
-1, 寫得不好.
在activity之中 應該可以直接使用onBackPressed() 直接改寫,例如:
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}
版主回覆:(11/04/2014 03:51:25 PM)
非常感謝您的指教~
沒錯,onBackPressed() 是更簡單的方式,
不過我那時並沒有注意到有這個 callback 可以使用~謝謝~ 🙂