如何在活动和小部件之间共享数据和方法

Posted

技术标签:

【中文标题】如何在活动和小部件之间共享数据和方法【英文标题】:How to share data and methods between activities and widgets 【发布时间】:2013-10-31 12:39:56 【问题描述】:

在我的 android 项目中,我有一个 Activity 和一个小部件(广播接收器)。两者都有一个简单的按钮。单击任一按钮时,应执行相同的操作: 首先,布尔变量应该设置为它的相反值(真到假,假到真)。此布尔值应独立于 Activity 和 Receiver 的生命周期进行存储。 然后,根据布尔值的旧状态,应该执行两种方法之一来查询 SQLite 数据库。

我需要像 Singleton Activity 这样的东西,它有自己的共享首选项和方法,可以从各种活动/接收器中调用。

实现这样的事情的最佳方式是什么?

【问题讨论】:

【参考方案1】:

听起来你想做的任何事情都不需要活动。如果需要,在初始化之后,我会编写一个带有私有构造函数和静态 getInstance() 方法的 POJO 单例,该方法返回对类本身的私有静态实例的引用。

然后你可以有一个实例方法来切换变量并触发 AsycTask 或任何执行查询的方法。布尔值的状态可以存储在私有实例变量中,也可以根据需要保留多长时间保存到 SharedPreferences。

【讨论】:

什么是 POJO 单例? Google 搜索刚刚为我提供了 Java 企业应用程序的结果,但我没有找到任何 Android 参考。 这个特别的想法没有什么是特定于 Android 的。它只是一个从 java.lang.Object 继承的普通类,就像在第一个示例中一样:javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html @RafaelBankosegger POJO 代表普通旧 Java 对象

以上是关于如何在活动和小部件之间共享数据和方法的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个共享目录以在集成测试和小部件测试之间共享代码?

在 iOS 14 中的主应用程序和小部件之间共享 UserDefaults

活动/服务和小部件提供者之间的通信?

在主机应用程序和今天的扩展程序之间共享用户生成的图像的最佳方式是啥

iOS 8 小部件,在应用程序组之间向前和向后共享数据

在进程之间共享活动对象的正确方法是啥?