国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 全局Dialog的簡(jiǎn)單實(shí)現(xiàn)方法

2019-12-12 01:09:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言:

這里所說(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就行了。

復(fù)制代碼 代碼如下:

Dialog myDialog = new Dialog(AppManager.getAppManager().currentActivity(), R.style.dialog_style);‘

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 娄底市| 延寿县| 松江区| 集贤县| 广元市| 无棣县| 离岛区| 开远市| 和平县| 邹平县| 黄大仙区| 抚远县| 鹤庆县| 金寨县| 建始县| 革吉县| 石柱| 满洲里市| 福贡县| 通河县| 开阳县| 海林市| 保定市| 奈曼旗| 霍林郭勒市| 罗定市| 灵璧县| 荆州市| 湘潭市| 韶山市| 察隅县| 永吉县| 福鼎市| 广丰县| 东台市| 彭山县| 陇南市| 永泰县| 昭苏县| 马鞍山市| 望城县|