在AsyncTask完成后更新不同活动中的操作栏

时间:2015-11-30 11:05:06

标签: android android-asynctask android-actionbar

我将开发一个在线商店的应用程序。每当用户想要将某个商品添加到购物车时,必须在商店中检查商品的可用性,然后将其添加到购物车。
对于这个动作,我开发了一个像这样的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中都可见。

2 个答案:

答案 0 :(得分:0)

您需要做的是在SQLite中存储放入购物车的商品,并在查询购物车商品的表格后根据结果更新操作栏中的图标。

答案 1 :(得分:0)

在这种情况下,我会使用IntentService对远程服务器进行呼叫(例如isItemAvailable)。在服务中继续执行结果后,可以发送broadcast以通知应用程序的其他组件。通过这种方式,您可以获得很多灵活性。您的背景数据可以存储在静态类中,如果它们仅对您当前的应用会话有效,但是如果您需要持久存储SharedPreferences或SQLite是您的方式。

要使用有效数据更新您的活动,应在onResume中完成。
在此方法中,您应该:
 1.致电您的服务 - >获取广播 - >更新活动或
 2.从上面的一个读取背景数据 - >更新活动。