- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个显示产品列表的 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/
我在将 Eclipse 项目导入 Android Studio 时遇到此错误。它显示了一条建议将库 Gradle: com.android.support:support-core-utils-27.
我正在尝试添加 flutter 的应用程序购买包。这首先造成了 AndroidX 迁移问题。然后在迁移之后我又遇到了一个我不知道如何解决的错误。 我什至没有为应用内购买编写任何代码。就在添加到 pub
我有一个显示产品列表的 fragment 。每个列表项都有一个监视列表按钮,如果未列入监视列表,则显示一个透明的心形图标;如果已列入监视列表,则显示一个红色心形图标。用户可以在列表页面中单击此心形图标
我遵循了 Youtube-Tutorial (https://www.youtube.com/watch?v=y8R2C86BIUc&list=PLgCYzUzKIBE8KHMzpp6JITZ2JxT
我正在尝试从服务向 Activity 发送消息,但由于某种原因它无法正常工作。 Activity @Override protected void onCreate(Bundle saved
在我的应用程序中,我必须从 IntentService 类通知我的 Activity 。为此,我正在使用 LocalBroadcastManager。但是我在我的广播接收器的 onReceive 中没
在我的 Android 应用程序中,我想广播一些通知。在 MainActivity 中,我注册了处理消息的 BroadcastReceiver 但据我所知,如果我不想发送消息,不建议使用全局 Broa
我正在使用新的 Android 构建系统创建一个应用程序,并使用 LocalBroadcastManager 将来自 IntentService 的通知发送回 Activity. 我已将以下产品风格定
我知道虽然 android 允许在 Intent 中传递 Serializable 对象,但出于性能原因不推荐这样做。 但是,如果使用 LocalBroadcastManager,对象是否会被序列化,
如何注册我的 App Widget(主屏幕小部件)以收听通过 LocalBroadcastManager 发送的本地广播消息? 最佳答案 您的应用程序小部件实际上是另一个应用程序进程(例如,主屏幕)中
我试图找到如何在扩展 BaseAdapter 的类中使用 LocalBroadcastManager 的答案,但是经过数小时的研究后,我没有找到正确的答案.我需要从适配器中的 Fragment 调用方
Android 的兼容包支持 LocalBroadcastManager,它可以在我的进程中发送广播。 http://developer.android.com/reference/android/s
我有一个 Activity A 和一个服务 S。它们通过 LocalBroadcastManager 进行通信。 如果 S 调用 sendBroadcast 两次,并依次传递两条消息 M1 和 M2,
我正在 Android 中处理这个项目,其中一个方面需要一个带有前台服务的 CountdownTimer。 Stack Overflow 上的其他一些答案提到 LocalBroadcastManage
你能帮我解决这个问题吗?我已经实现了一个接收器(通过 XML 注册),它监听特定的本地广播,然后启动一个服务进行进一步处理,但不知何故该接收器没有接收任何广播。 虽然另一个通过代码在本地注册的接收器能
我正在尝试连接我的服务和 Activity ,尝试了不同的方法,但没有任何效果。 当应用程序启动时,我在 SplashActivity 中启动 Servise。然后 Service 在后台做一些工作,
接收器可以注册到LocalBroadcastManager吗?在不同的线程中执行?我们使用 LocalBroadcastmanager 注册一个 Intent void registerReceive
我尝试学习 LocalBroadcastManager。在网络上搜索并实现了一个简单的应用程序,其中包含两个 Activity 来执行 LocalBroadcastManager。但它不起作用。我找不
我想知道 LocalBroadcastManager 是否比对订阅事件发布者的 Objects 的方法调用更好,以及开销(如果有)是否值得。 我正在开发一个聊天应用程序,示例过程包括将新收到的原始消息
谁能给我一个例子,说明如何在 Activity 类中正确取消注册 LocalBroadcastManager 接收器? Android 开发人员培训建议这样做: @Override publ
我是一名优秀的程序员,十分优秀!