Android 全局Dialog的簡(jiǎn)單實(shí)現(xiàn)方法
前言:
這里所說(shuō)的全局Dialog是指無(wú)論當(dāng)前應(yīng)用是處于哪一個(gè)頁(yè)面上,都能夠及時(shí)彈出Dialog來(lái)提示用戶一些信息,用戶體驗(yàn)不會(huì)很好,一般應(yīng)用于優(yōu)先級(jí)非常高的通知。
分析 :
想要實(shí)現(xiàn)無(wú)論當(dāng)前應(yīng)用是處于哪一個(gè)頁(yè)面上,都能夠及時(shí)彈出Dialog功能其實(shí)很簡(jiǎn)單,只要能獲取到當(dāng)前顯示的Activity就行了,也就是棧頂?shù)腁ctivity。
實(shí)現(xiàn)過(guò)程 : 一般項(xiàng)目中我們都會(huì)通過(guò)一個(gè)類來(lái)管理我們的Activity,即AppManager
/**
* Activity管理類
* @author Donkor
*/
public class AppManager {
private static Stack<Activity> activityStack;
private static AppManager instance;
private AppManager(){}
/**
* 單一實(shí)例
*/
public static AppManager getAppManager(){
if(instance==null){
instance=new AppManager();
}
return instance;
}
/**
* 添加Activity到堆棧
*/
public void addActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 獲取當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 結(jié)束當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
*/
public void finishActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
/**
* 結(jié)束指定的Activity
*/
public void finishActivity(Activity activity){
if(activity!=null){
activityStack.remove(activity);
activity.finish();
activity=null;
}
}
/**
* 結(jié)束指定類名的Activity
*/
public void finishActivity(Class<?> cls){
for (Activity activity : activityStack) {
if(activity.getClass().equals(cls) ){
finishActivity(activity);
}
}
}
/**
* 結(jié)束所有Activity
*/
public void finishAllActivity(){
for (int i = 0, size = activityStack.size(); i < size; i++){
if (null != activityStack.get(i)){
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出應(yīng)用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
再封裝一個(gè)BaseActivity類統(tǒng)一管理,給各個(gè)Activity繼承
/**
* Activity基類
* @author Donkor
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//將Activity實(shí)例添加到AppManager的堆棧
AppManager.getAppManager().addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//將Activity實(shí)例從AppManager的堆棧中移除
AppManager.getAppManager().finishActivity(this);
}
}
最后需要MainActivity(主頁(yè)面、主類)或者Service中處理Dialog的顯示問(wèn)題,通過(guò)AppManager獲取到當(dāng)前棧頂?shù)腁ctivity,用于構(gòu)造Dialog就行了。
Dialog myDialog = new Dialog(AppManager.getAppManager().currentActivity(), R.style.dialog_style);‘
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用Dialog風(fēng)格彈出框的Activity
- Android實(shí)現(xiàn)從底部彈出的Dialog示例(一)
- Android 中從屏幕左下角彈出Dialog動(dòng)畫(huà)效果的實(shí)現(xiàn)代碼
- Android中自定義的dialog中的EditText無(wú)法彈出輸入法解決方案
- Android 仿蘋(píng)果底部彈出Dialog
- Android 從底部彈出Dialog(橫向滿屏)的實(shí)例代碼
- Android解決dialog彈出時(shí)無(wú)法捕捉Activity的back事件的方法
- Android自定義彈出框dialog效果
- Android 解決dialog彈出時(shí)無(wú)法捕捉Activity的back事件問(wèn)題
- Android 8.0如何完美適配全局dialog懸浮窗彈出
相關(guān)文章
Android穩(wěn)定性:可遠(yuǎn)程配置化的Looper兜底框架
這篇文章主要為大家介紹了Android穩(wěn)定性可遠(yuǎn)程配置化的Looper兜底框架實(shí)例實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android入門之實(shí)現(xiàn)自定義可復(fù)用的BaseAdapter
這篇文章主要為大家詳細(xì)介紹了Android如何構(gòu)建一個(gè)可復(fù)用的自定義BaseAdapter,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下2022-11-11
Android獲取驗(yàn)證碼倒計(jì)時(shí)顯示效果
這篇文章主要為大家詳細(xì)介紹了Android獲取驗(yàn)證碼顯示的兩種簡(jiǎn)單實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Android實(shí)現(xiàn)添加商品到購(gòu)物車動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)添加商品到購(gòu)物車的動(dòng)畫(huà)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android自定義View實(shí)現(xiàn)多邊形統(tǒng)計(jì)圖示例代碼
這篇文章主要給大家介紹了關(guān)于Android自定義View如何實(shí)現(xiàn)多邊形統(tǒng)計(jì)圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
Android使用Spinner控件實(shí)現(xiàn)下拉列表的案例
今天小編就為大家分享一篇關(guān)于Android使用Spinner控件實(shí)現(xiàn)下拉列表的案例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
android 實(shí)現(xiàn)在照片上繪制涂鴉的方法
今天小編就為大家分享一篇android 實(shí)現(xiàn)在照片上繪制涂鴉的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Android 解決WebView多進(jìn)程崩潰的方法
這篇文章主要介紹了Android 解決WebView多進(jìn)程崩潰的方法,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下2021-03-03

