Android 获取数据和传递给其他活动的最佳方式是什么?
到目前为止,我创建的大多数应用程序都是从网络获取数据,并将其存储在一个单例类中,以便在活动之间共享数据。当我处理完这些数据后,我通常会清除那些将其设置为NULL的应用程序,它的工作非常好 我的问题是哪种方法更好??Android 获取数据和传递给其他活动的最佳方式是什么?,android,database,singleton,parcelable,android-loader,Android,Database,Singleton,Parcelable,Android Loader,到目前为止,我创建的大多数应用程序都是从网络获取数据,并将其存储在一个单例类中,以便在活动之间共享数据。当我处理完这些数据后,我通常会清除那些将其设置为NULL的应用程序,它的工作非常好 我的问题是哪种方法更好?? 使用包裹 数据库的写入和查询 独生子女班 我们到底什么时候需要使用装载机??为什么我们不能通过加载程序共享数据 如果问题被重复。。。请忽略???这取决于您希望使用数据的方式。如果您希望在将来使用数据,如在应用程序被终止并重新启动后,您应该将其保存在数据库中。 我更喜欢parcelab
如果问题被重复。。。请忽略???这取决于您希望使用数据的方式。如果您希望在将来使用数据,如在应用程序被终止并重新启动后,您应该将其保存在数据库中。 我更喜欢parcelable而不是singleton,因为我不必费心清除数据。
根据,我们通常使用加载程序异步加载数据,并监视数据源的更改。据我所知,您没有执行这两种操作,因此在这种情况下不需要加载程序。1.数据库:如果您将来要使用网络数据,或者要根据需要执行一些查询操作以执行过滤,最好使用db 2.Singleton类:大多数开发人员都使用它,因为它更高效,可以在getter和setter的帮助下轻松地更改和检索值 对第一部分的答复
Activity
s或Fragment
s之间传递数据的最佳方法是使用Parcelable
对象。据说它比可序列化的更优化。有两个库/插件可以帮助您创建Parcelable
对象。最近有人提到我。然而,我个人使用IntelliJ IDEA和Android Studio的插件
SharedReferences
在Activity
s或Fragment
s之间传递数据听起来很奇怪,而且由于它们不是设计用于这种方式的,因此只会造成混乱
Parcelable
,或者如果你想变得真正懒惰,那么就选择Serializable
(根据大多数人的说法,这并不可怕,但也不太好)
不要使用单例、数据库、静态字段等来破坏代码,它们会回来困扰你
对第二部分的答复:
什么时候我们需要使用装载机
加载程序将在您使用时使用,主要用于我们希望从服务器检索数据(通过web API)或在后台执行某些操作的情况。它类似于使用线程
或异步任务
,但与这两种方法不同,它的功能非常强大,因为它不会在屏幕旋转时被破坏
你应该阅读和(这是一系列的4篇文章,非常详细,非常棒)。这是一种非常酷的将数据传递给另一个活动的方法。我在Stackoverflow上的其他地方读到了这篇文章,现在总是使用它。它可能不适合您的用例,但听起来会 例如,假设您希望将可包裹的“数据模型”从ActivityA传递到ActivityB 在ActivityB内部创建一个名为“start”的公共静态方法,如下所示
private static final String DATAMODEL_KEY = "datamodel_key";
public static void start(Context context, DataModel dataModel) {
Intent intent = new Intent(context, ActivityB.class);
intent.putExtra(DATAMODEL_KEY, dataModel);
context.startActivity(intent);
}
要启动ActivityB,只需像这样调用上面的“start”方法
ActivityB.start(this, datamodel);
如果从活动调用,请使用“this”,或使用片段从调用“getActivity()”
这将包含在ActivityB中启动ActivityB的代码,如私有静态最终数据模型密钥字段等。不过,要回答您的问题,请使用选项1和parcelables,并尝试我上面发布的代码,以帮助使用数据启动活动。我的大多数项目都使用选项3如果
dataModel
是非原始参数,则它可以是Parcelable或Serializable@sreekumar我只是添加了一些关于装载机的更多信息(最后一段)。我希望你觉得它有用。