簡體   English   中英

通過獲取推送通知分段更新數據

[英]Update data in fragment with getting push notification

這不是重復的問題。 因此,請勿重復提出該問題。

我有情景。 我正在實現我已經完成的所有功能的聊天模塊。

MainActivity-MainFragment-聊天列表片段。

MainActivity擁有MainFragment ,它具有帶有tablayout的viewpager。 MainFragment's視圖尋呼機適配器包含ChatList Fragment,其中,API調用了聊天列表。

現在,如果我已經在聊天列表片段中並且推送通知來發送消息,則不應出現我所做的通知。 但是我想更新聊天列表中的數據意味着要調用聊天列表API。

我沒有得到MainActivity上下文,所以我可以訪問MainFragment並檢索該ChatList片段。

 case "chat_message":




//                if (HirerTabsActivity.isOpenChat()) {
//                    Log.v("ATATATA", "asd");
//
//                } else {

                if (GetUserProfileData.getInstance().getUserDetail().getUser_type().equalsIgnoreCase("artist")) {
                    intent = new Intent(this, ArtistTabsActivity.class);
                    intent.putExtra("fromNotification", "Y");

                } else {
                    intent = new Intent(this, HirerTabsActivity.class);
                    intent.putExtra("fromNotification", "Y");
                }


            break;

更新的代碼

case "chat_message":

            if (mediaPrefs.getString(Constant.SharedPreferences_IN_CHAT_SCREEN, "").equalsIgnoreCase("Y")) {
                sendBroadcast(new Intent().setAction("chat_refresh"));
            } else {

                if (GetUserProfileData.getInstance().getUserDetail().getUser_type().equalsIgnoreCase("artist")) {
                    intent = new Intent(this, ArtistTabsActivity.class);
                    intent.putExtra("fromNotification", "Y");

                } else {
                    intent = new Intent(this, HirerTabsActivity.class);
                    intent.putExtra("fromNotification", "Y");
                }
            }

高級幫助將不勝感激!

看看LocalBroadcastManager: https : //developer.android.com/reference/android/support/v4/content/LocalBroadcastManager

這樣,您可以從服務發送本地廣播,以監聽對活動/片段的推送。 您可以在此處找到示例實現: 如何使用LocalBroadcastManager?

好問題讓我分享一下它的工作方式。

在Notficationservice中,您需要發送廣播

 //refresh chat list 
 sendBroadcast(new Intent().setAction("chat_refresh"));

和你的碎片

 private class RefreshBrodcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {

            if (getUserVisibleHint() && isVisible()) {
               // your can refresh via api
            }
        }
    }

如果您不想在聊天片段時顯示通知,則可以使用onresume() & onpause()方法管理靜態標志或首選項標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM