我将开发一个在线商店的应用程序。每当用户想要将某个商品添加到购物车时,必须在商店中检查商品的可用性,然后将其添加到购物车。
对于这个动作,我开发了一个像这样的AsyncTask:
mercury.cargo_recognition.admin.galleryhadmedia:
class: Mercury\CargoRecognitionBundle\Admin\GalleryHasMediaAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: General, label: 'Gallery Has Media' }
arguments: [ null, Mercury\CargoRecognitionBundle\Entity\GalleryHasMedia, "MercuryCargoRecognitionBundle:GalleryHasMediaAdmin" ]
如果项目可用,则必须更新位于ActionBar上的购物车图标。问题是,当我们离开当前活动并转移到另一个活动时,可能会发生此更新。我想知道如何在不考虑运行哪个活动的情况下更新actionBar图标?
注意:购物车图标在所有活动的ActionBar中都可见。
答案 0 :(得分:0)
您需要做的是在SQLite中存储放入购物车的商品,并在查询购物车商品的表格后根据结果更新操作栏中的图标。
答案 1 :(得分:0)
在这种情况下,我会使用IntentService对远程服务器进行呼叫(例如isItemAvailable
)。在服务中继续执行结果后,可以发送broadcast以通知应用程序的其他组件。通过这种方式,您可以获得很多灵活性。您的背景数据可以存储在静态类中,如果它们仅对您当前的应用会话有效,但是如果您需要持久存储SharedPreferences或SQLite是您的方式。
要使用有效数据更新您的活动,应在onResume
中完成。
在此方法中,您应该:
1.致电您的服务 - >获取广播 - >更新活动或
2.从上面的一个读取背景数据 - >更新活动。