亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關于Android中點擊通知欄的通知啟動Activity問題解決

 更新時間:2017年03月02日 11:40:30   作者:jacpy  
這篇文章主要介紹了關于解決Android中點擊通知欄的通知啟動Activity問題的相關資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

最近遇到一個很奇葩的問題,終于解決了,所以想著記錄一下,方便大家或者自己以后有需要的時候可以參考學習。

問題場景

用小米手機使用小米推送一條消息,然后點擊通知欄中的消息啟動應用,然后進入會話的Activity。應用啟動后,如果當前界面不是會話界面,那么新消息會在通知欄顯示消息提醒,然后點擊會話消息后卻進不了會話的Activity,即點擊了通知欄通知后,系統(tǒng)都沒有啟動指定Activity的意思,沒有看到系統(tǒng)啟動Activity的Log,到是會看到系統(tǒng)處理這個Activity的影子。

這個指定的Activity不是會話的Activity,而是在AndroidManifest.xml文件中指定android.intent.category.LAUNCHER的Activity A。也就是說有會話消息都是先從這個A開始,然后把數(shù)據往后面的Activity傳。

這里顯示通知有兩種方式,一種是由手機系統(tǒng)在通知欄彈出,比如小米手機上使用小米推送,華為手機上使用華為推送,另外一種是由應用的遠程進程彈出。

啟動應用的第一個Activity A也有兩種方式,一種是直接通過new來構造一個Intent,然后傳入Activity A的class;另外一種是通過context.getPackageManager().getLaunchIntentForPackage(context.getPackageName())來獲取啟動的Activity A的Intent。然后調用PendingIntent.getActivity()方法,將得到的intent傳入。

那么問題來了,如果是點擊系統(tǒng)彈出的通知欄或者遠程進程彈出的通知欄,如果只是使用其中一種啟動方式啟動應用,那么在應用啟動后,點擊通知欄中由后臺遠程進程彈出的新消息通知,這個時候就不能進入會話的Activity。從系統(tǒng)的日志來看,沒有啟動Activity,只是對Activity做了處理。

可能有人會想到是不是要加一個Intent.FLAG_ACTIVITY_NEW_TASK標識,因為在getLaunchIntentForPackage()方法中加了這個標識。

最后測試發(fā)現(xiàn),只要應用沒有被啟動,不管是點擊系統(tǒng)彈出的通知欄還是遠程進程彈出的通知欄,如果再收到新消息通知,再點擊通知欄,就能進入會話Activity了。那只要判斷應用中是否有Activity被啟動就OK了,貌似問題可以解決了。

問題解決

于是用了下面的邏輯來判斷是否有前臺Activity在運行。

/**
 * 判斷UI進程是否正在運行
 * @return 返回true表示正在運行,否則沒有運行
 */
public static boolean isForegroundRunning() {
 ActivityManager am = (ActivityManager) EimCloud.getContext().getSystemService(Context.ACTIVITY_SERVICE);
 List<ActivityManager.RunningAppProcessInfo> list = am.getRunningAppProcesses();
 if (list != null) {
  for (ActivityManager.RunningAppProcessInfo info : list) {
   if (info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
  && EimCloud.getContext().getPackageName().equals(info.processName)) {
  return true;
   }
  }
 }

 return false;
}

拓展

但是上面的方法在小米手機上湊效了,但在華為手機上還是有問題,即使同樣的場景。華為又坑爹了!

于是開始從上面的ActivityManager.RunningAppProcessInfo類中的importance變量的狀態(tài)入手,然后測試各種場景可能出現(xiàn)的變量值,結果發(fā)現(xiàn)效果不盡人意,有些場景問題依舊。

最后,又換種思路:不從Activity A開始啟動應用,換個Activity B,也就是在調用PendingIntent.getActivity()方法傳入Intent對象使用B的class。啟動B會發(fā)現(xiàn)應用沒有被初始化,則跳轉到A執(zhí)行初始化,然后再走正常流程。

再針對各種場景以及各種機型測試,發(fā)現(xiàn)問題解決。從上面可以看出,雖然不懂背后原理,但解決問題的思路一定要廣,特別是在急著發(fā)版本的時候,不要在一棵樹上吊死。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Android圖片裁剪功能實現(xiàn)代碼

    Android圖片裁剪功能實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了Android圖片裁剪功能實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android實現(xiàn)消息總線的幾種方式詳解

    Android實現(xiàn)消息總線的幾種方式詳解

    關于Android消息傳遞方式比較多,一般的系統(tǒng)原生實現(xiàn)方式比如Handler?、自定義廣播、接口回調,以及三方工具?EventBus?、RxBus?等,下面這篇文章主要給大家介紹了關于Android實現(xiàn)消息總線的幾種方式,需要的朋友可以參考下
    2022-06-06
  • Android Notification的多種用法總結

    Android Notification的多種用法總結

    這篇文章主要介紹了Android Notification的多種用法總結的相關資料,需要的朋友可以參考下
    2017-06-06
  • Android 源碼淺析RecyclerView ItemAnimator

    Android 源碼淺析RecyclerView ItemAnimator

    這篇文章主要為大家介紹了Android 源碼淺析RecyclerView ItemAnimator,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • RecycleView實現(xiàn)item側滑刪除與拖拽

    RecycleView實現(xiàn)item側滑刪除與拖拽

    這篇文章主要為大家詳細介紹了RecycleView實現(xiàn)item側滑刪除與拖拽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 使用Fragment+ViewPager實現(xiàn)底部導航欄

    使用Fragment+ViewPager實現(xiàn)底部導航欄

    這篇文章主要為大家詳細介紹了使用Fragment+ViewPager實現(xiàn)底部導航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android燒錄指令fastboot簡介

    Android燒錄指令fastboot簡介

    fastboot 是作為 Android 系統(tǒng)編譯器的客戶端,編譯后位于 ./out/host/?Linux?-x86/bin/fastboot 目錄下,這篇文章主要介紹了Android燒錄指令fastboot簡介,需要的朋友可以參考下
    2024-01-01
  • Android圖片加載框架Gilde源碼層深入分析

    Android圖片加載框架Gilde源碼層深入分析

    Glide就像Picasso,可以從多個源去加載和顯示圖片,同時也兼顧緩存和在做圖片處理的時候維持一個低內存消耗。它已經在Google官方APP中使用了,就和Picasso一樣受歡迎
    2022-11-11
  • Android 8.0版本更新無法自動安裝問題的解決方法

    Android 8.0版本更新無法自動安裝問題的解決方法

    這篇文章主要為大家詳細介紹了Android 8.0版本更新無法自動安裝問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android?Activity共享元素動畫示例解析

    Android?Activity共享元素動畫示例解析

    這篇文章主要為大家介紹了Android?Activity共享元素動畫示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論