gpt4 book ai didi

java - 如何在整个应用程序中使用 "LocalBroadcastManager"?

转载 作者:行者123 更新时间:2023-12-02 09:56:06 29 4
gpt4 key购买 nike

我有一个显示产品列表的 fragment 。每个列表项都有一个监视列表按钮,如果未列入监视列表,则显示一个透明的心形图标;如果已列入监视列表,则显示一个红色心形图标。用户可以在列表页面中单击此心形图标来监视或取消监视该产品。

当点击商品正文时,用户可以转到商品详细信息页面。这里还有一个监视列表按钮。

我想要的功能是,当用户单击详细信息页面中的监视列表图标时,当用户从详细信息页面返回到列表页面时,它还应该更改列表页面中的监视列表图标。

为此,我使用了本地广播管理器,以便当用户单击详细信息页面中的监视列表图标时,它会发送包含产品 ID 和监视列表状态的广播。我只是更改适配器 json 数组数据,其中包含通过广播发送到我在列表页面上编写的接收器的详细信息,并通知数据集已更改。

我的问题是,我什么时候应该取消注册我在列表页面上写的这个接收器?

我无法取消注册列表页面广播接收器,因为我想接收从另一个页面的详细信息页面发送的事件。

这是我在列表页面上写的接收器。

final BroadcastReceiver broadcastReceiverWatchlist = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{
LogHelper.logReadyMadeString("aaaaaaaaa13");
String product_id = intent.getStringExtra("productId");
String watchlistStatus = intent.getStringExtra("wishlistStatus");
for(int i=0;i<totalProductJsonArray.length();i++){
if(totalProductJsonArray.getJSONObject(i).getString("product_id").equalsIgnoreCase(productId)){
totalProductJsonArray.getJSONObject(i).put("watchlist",watchlistStatus);
productListingAdaterRv.notifyDataSetChanged();
break;
}
}
}catch (Exception e){
e.printStackTrace();
}
}
};

LocalBroadcastManager.getInstance(mContext).registerReceiver(broadcastReceiverWatchlist, filter);

这是我在详细信息页面上编写的用于向列表页面发送广播的代码

Intent intentToBroadCast = new Intent();

intentToBroadCast.setAction("com.applicationid.broadcast.WATCHLIST_NOTIFICATION");
intentToBroadCast.putExtra("wishlistStatus",watchlistStatus);
intentToBroadCast.putExtra("productId",productId);

LocalBroadcastManager.getInstance(mContext).sendBroadcast(intentToBroadCast);

代码运行良好。我在其详细信息页面中关注了一个产品。它在列表页面发送广播并更改相应产品 ID 的监视列表状态。

我想知道什么时候应该在列表页面取消注册接收器?

感谢您的宝贵时间。如有疑问请告知我。

注意:产品列表页面是主页 Activity 中的一个 fragment 。产品详细信息页面完全是不同的 Activity 。

最佳答案

只需在 ProductListFragment 的 onDestroy 中进行取消注册工作

关于java - 如何在整个应用程序中使用 "LocalBroadcastManager"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999754/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com