最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年02月10日 13:43:17   作者:Donkor-  
本篇文章主要介紹了Android 全局Dialog的簡單實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言:

這里所說的全局Dialog是指無論當(dāng)前應(yīng)用是處于哪一個頁面上,都能夠及時彈出Dialog來提示用戶一些信息,用戶體驗不會很好,一般應(yīng)用于優(yōu)先級非常高的通知。

分析 :

想要實現(xiàn)無論當(dāng)前應(yīng)用是處于哪一個頁面上,都能夠及時彈出Dialog功能其實很簡單,只要能獲取到當(dāng)前顯示的Activity就行了,也就是棧頂?shù)腁ctivity。

實現(xiàn)過程 : 一般項目中我們都會通過一個類來管理我們的Activity,即AppManager

/**
 * Activity管理類
 * @author Donkor
 */
public class AppManager {
  private static Stack<Activity> activityStack;
  private static AppManager instance;

  private AppManager(){}
  /**
   * 單一實例
   */
  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(堆棧中最后一個壓入的)
   */
  public Activity currentActivity(){
    Activity activity=activityStack.lastElement();
    return activity;
  }
  /**
   * 結(jié)束當(dāng)前Activity(堆棧中最后一個壓入的)
   */
  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();
    }
  }
}

再封裝一個BaseActivity類統(tǒng)一管理,給各個Activity繼承

/**
 * Activity基類
 * @author Donkor
 */
public abstract class BaseActivity extends AppCompatActivity {

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //將Activity實例添加到AppManager的堆棧
    AppManager.getAppManager().addActivity(this);
  }


  @Override
  protected void onDestroy() {
    super.onDestroy();
    //將Activity實例從AppManager的堆棧中移除
    AppManager.getAppManager().finishActivity(this);
  }

}

最后需要MainActivity(主頁面、主類)或者Service中處理Dialog的顯示問題,通過AppManager獲取到當(dāng)前棧頂?shù)腁ctivity,用于構(gòu)造Dialog就行了。

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android中Service的全面總結(jié)

    Android中Service的全面總結(jié)

    這篇文章主要全面總結(jié)了Android中Service的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android dataBinding與ListView及事件詳解

    Android dataBinding與ListView及事件詳解

    這篇文章主要介紹了Android dataBinding與ListView及事件詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Android幾種多渠道打包的步驟詳解

    Android幾種多渠道打包的步驟詳解

    在不同的應(yīng)用市場可能有不同的統(tǒng)計需求,需要為每個應(yīng)用市場發(fā)布一個安裝包,這里就引出了Android的多渠道打包。這篇文章主要介紹了Android幾種多渠道打包,需要的朋友可以參考下
    2019-09-09
  • Android GPS定位測試(附效果圖和示例)

    Android GPS定位測試(附效果圖和示例)

    本人做了GPS相關(guān)的嵌入式軟件已經(jīng)幾年了,所以說起要做個測試GPS定位模塊的程序,第一反應(yīng)就是串口讀取GPS模塊的數(shù)據(jù),然后解析GPS的NMEA格式數(shù)據(jù)
    2013-07-07
  • 詳解kotlin中::雙冒號的使用

    詳解kotlin中::雙冒號的使用

    在?Kotlin?中?,?::?雙冒號操作符?的作用是獲取類,對象,函數(shù),屬性的?類型對象引用,這篇文章主要介紹了詳解kotlin中::雙冒號的使用,需要的朋友可以參考下
    2023-04-04
  • Android?中的監(jiān)聽和按鍵處理詳情

    Android?中的監(jiān)聽和按鍵處理詳情

    這篇文章主要介紹了Android?中的監(jiān)聽和按鍵處理詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Android高仿IOS 滾輪選擇控件

    Android高仿IOS 滾輪選擇控件

    這篇文章主要為大家詳細(xì)介紹了Android 高仿IOS滾輪選擇控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android View背景選擇器編寫技巧

    Android View背景選擇器編寫技巧

    本文主要介紹了Android View背景選擇器編寫技巧,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Flutter中灰屏問題的原因及解決方法

    Flutter中灰屏問題的原因及解決方法

    生產(chǎn)中的 flutter 應(yīng)用程序中的灰屏是一種通用占位符,當(dāng)框架遇到問題無法渲染預(yù)期用戶界面時就會顯示,所以基本上是出現(xiàn)問題時的后備指示器,本文給大家介紹了Flutter中灰屏問題的原因及解決方法,需要的朋友可以參考下
    2024-06-06
  • Android.mk文件中添加第三方j(luò)ar文件的方法

    Android.mk文件中添加第三方j(luò)ar文件的方法

    這篇文章主要介紹了Android.mk文件中添加第三方j(luò)ar文件及引用第三方j(luò)ar包的方法,需要的朋友可以參考下
    2018-01-01

最新評論

江华| 永平县| 新平| 临澧县| 平果县| 夏津县| 农安县| 新绛县| 广南县| 彭泽县| 综艺| 兖州市| 兰坪| 大石桥市| 寻甸| 梁山县| 怀集县| 石景山区| 承德县| 钟祥市| 大姚县| 拜泉县| 抚州市| 崇义县| 洛阳市| 永泰县| 明溪县| 七台河市| 衡阳市| 济阳县| 南城县| 桃源县| 龙井市| 庆阳市| 金门县| 灯塔市| 临西县| 拉孜县| 宜章县| 灵丘县| 洞口县|