繁体   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