Android监听后台状态,退出即杀死并显示退出提示框
生活随笔
收集整理的這篇文章主要介紹了
Android监听后台状态,退出即杀死并显示退出提示框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、當界面不可見時釋放內存
@Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);switch (level) {//TRIM_MEMORY_UI_HIDDEN表示當用戶點擊了Home鍵或者Back鍵導致應用的UI界面不可見case TRIM_MEMORY_UI_HIDDEN:SetLED(false);System.exit(0);//break;}}二、在Activity中重寫onBackPressed()方法監聽返回鍵
@Overridepublic void onBackPressed() {//此處寫退向后臺的處理SetLED(false);System.exit(0);}三、監聽返回鍵,彈出提示對話框
public boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK) {new AlertDialog.Builder(this).setTitle("提醒").setMessage("是否退出!").setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {SetLED(false);System.exit(0);}}).setNegativeButton("取消",null).show();}return false;}四、點擊兩次返回鍵,提示是否退出
eg:1
//定義一個變量,來標示是否退出private static boolean exit=false;Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);exit=false;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK){exits();return false;}return super.onKeyDown(keyCode,event);}public void exits(){if(!exit){exit=true;Toast.makeText(this, "再按一次退出程序",Toast.LENGTH_SHORT).show();//利用handle延遲發送更改狀態信息handler.sendEmptyMessageDelayed(0,3000);}else{finish();System.exit(0);}}eg:2
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK){exitBy2Click(); //調用雙擊退出函數}return false;}//雙擊退出函數private static Boolean isExit = false;private void exitBy2Click() {Timer tExit = null;if (isExit == false) {isExit = true; // 準備退出Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();tExit = new Timer();tExit.schedule(new TimerTask() {@Overridepublic void run() {isExit = false; // 取消退出}}, 2000); // 如果2秒鐘內沒有按下返回鍵,則啟動定時器取消掉剛才執行的任務} else { // finish();SetLED(false);System.exit(0);}}eg:3
private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if ((System.currentTimeMillis() - exitTime) > 2000) {Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();} else {SetLED(false);jwsobject.jwsSetStatusBar(Main2Activity.this, true);finish();System.exit(0);}return false;}return super.onKeyDown(keyCode, event);}五、 在進程中去尋找當前APP的信息,判斷是否在前臺運行
private boolean isAppOnForeground() {//獲取運行中的應用信息ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);//取得包名String packageName = getApplicationContext().getPackageName();//獲取該設備上應用程序進程列表List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();if (appProcesses == null)return false;//后臺for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {if (appProcess.processName.equals(packageName) && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {//根據包名殺死對應進程activityManager.killBackgroundProcesses(packageName);return true;//前臺}}return false;//后臺}六、監聽對話框里面的button點擊事件
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog, int which){switch (which){case AlertDialog.BUTTON_POSITIVE:// "確認"按鈕退出程序finish();break;case AlertDialog.BUTTON_NEGATIVE:// "取消"第二個按鈕取消對話框break;default:break;}}};@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event){if (keyCode == KeyEvent.KEYCODE_BACK ){ // // 創建退出對話框 // AlertDialog isExit = new AlertDialog.Builder(this).create(); // // 設置對話框標題 // isExit.setTitle("系統提示"); // // 設置對話框消息 // isExit.setMessage("確定要退出嗎"); // // 添加選擇按鈕并注冊監聽 // isExit.setPositiveButton("確定",null); // isExit.setNegativeButton("取消", listener); // // 顯示對話框 // isExit.show();new AlertDialog.Builder(this).setTitle("系統提示").setMessage("確定要退出嗎").setPositiveButton("確定", listener).setNegativeButton("取消", listener).show();}return false;}總結
以上是生活随笔為你收集整理的Android监听后台状态,退出即杀死并显示退出提示框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot定时任务@Enabl
- 下一篇: Android中finish()、Sys