日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android长按home键关闭程序,应用程序退出后Dialog弹出

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android长按home键关闭程序,应用程序退出后Dialog弹出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FreeMusic新增功能

1.按住Home鍵,back鍵,或recent鍵 彈出提示框

難點:

1.當應用程序退出的時候,dialog 依賴所在Activity的context,而應用程序退出的時候 Activity銷毀,所以context隨之銷毀

解決方案:開啟服務或廣播,在其中開啟系統級別的對話框

2.關于Home鍵,Recent鍵退出時監聽事件 位置,需求是要對所有的Activity生效

解決方案:

1.在Application的on Create方法進行注冊,在onTerminal方法里進行反注

存在的問題:因為項目采取的是多進程,所以onCreate方法會被調用多次

會多次注冊,產生錯亂問題,故此方法舍棄

2.在BaseActivity里onResume方法里進行注冊,onPause里進行反注冊

下面貼代碼:

1.對話框代碼

public classPolicyReminderDialog {

public static voidshow(Context context) {

finalBooleanPrefField notShowPolicyAgainPref =newFreeMusicSharePreferences_(context).notShowPolicyAgain();

if(notShowPolicyAgainPref.get()) {

return;

}

finalandroid.app.AlertDialog.Builder builder;

builder =newandroid.app.AlertDialog.Builder(context);

builder.setTitle(R.string.policy_reminder_dialog_title)

.setMessage(R.string.policy_reminder_dialog_desc)

.setNegativeButton(R.string.policy_reminder_dialog_button_cancel, newDialogInterface.OnClickListener() {

@Override

public voidonClick(DialogInterface dialog, intwhich) {

}

})

.setNeutralButton(R.string.policy_reminder_dialog_button_dontshow, newDialogInterface.OnClickListener() {

@Override

public voidonClick(DialogInterface dialog, intwhich) {

notShowPolicyAgainPref.put(true);

}

});

android.app.AlertDialog dialog = builder.create();

dialog.setCanceledOnTouchOutside(false);

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//需要添加的語句

dialog.show();

}

}

在廣播或服務中調用

public classDialogReceiverextendsBroadcastReceiver {

@Override

public voidonReceive(Context context,Intent intent) {

PolicyReminderDialog.show(context);

}

}

back 鍵

@Override

public voidonBackPressed() {

super.onBackPressed();

Intent intents =newIntent("com.classiclistening.freemusic.PolicyDialog");

sendBroadcast(intents);

}

Home鍵

privateBroadcastReceiverhomeKeyReceiver=newBroadcastReceiver() {

@Override

public voidonReceive(Context context,Intent intent) {

Intent intents =newIntent("com.classiclistening.freemusic.PolicyDialog");

sendBroadcast(intents);

};

@Override

protected voidonResume() {

super.onResume();

IntentFilter homeFilter =newIntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);

registerReceiver(homeKeyReceiver,homeFilter);

}

@Override

protected voidonPause() {

super.onPause();

unregisterReceiver(homeKeyReceiver);

}

注意:服務的時候recent鍵殺死后會重啟 (故不建議用服務)

總結

以上是生活随笔為你收集整理的android长按home键关闭程序,应用程序退出后Dialog弹出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。