android - 获取数据和传递给另一个 Activity 的最佳方式是什么?

标签 android database singleton parcelable android-loader

Most the app so far I had created, I fetch the data from Network and store it in a singleton class to share data between Activities, when I'm done with those data, I usually clear those setting it to NULL, its work perfectly well

我的问题是哪种方法更好??

  1. 使用parcelable
  2. 写入数据库并查询
  3. 单例类

什么时候我们需要使用加载器??为什么我们不能通过 Loaders 共享数据??

如果问题重复...请忽略 ??

最佳答案

第一部分的答案

  1. 可包裹:

    ActivityFragment 之间传递数据的最佳方式是使用 Parcelable 对象。据说它比 Serializable 更优化。有几个库/插件可以帮助您创建 Parcelable 对象。最近我被提到Parceler, created by John Carl .但是,我个人使用 Android Parcelable code generator by Michal Charmas , IntelliJ IDEA 和 Android Studio 的插件。

  2. 数据库或 SharedPreferences:

    使用 DataBase 或 SharedPreferencesActivityFragment 之间传递数据听起来很奇怪,因为它们不是设计用于此这样只会造成困惑。

  3. 单例:

    阅读这篇内容丰富的帖子 Singletons are Pathological Liars .

结论:

我推荐 Parcelable,或者如果您想变得真正懒惰,那就选择 Serializable(大多数人认为这并不糟糕,但也不是很好)。

不要使用单例、数据库、静态字段等弄乱您的代码。它们会回来困扰您。

第二部分答案:

When exactly we need to use Loaders

加载程序,将是 AsyncTaskLoader当你使用时,基本上用于我们想要从服务器检索数据(通过 Web API)或在后台执行某些操作的情况。它类似于使用 ThreadAsyncTask 但非常强大,因为它不会在屏幕旋转时被破坏,这与这两者不同。

你应该阅读 How to Use Loaders in AndroidAlex Lockwood's posts on Loaders (这是一个由 4 篇文章组成的系列文章。非常详细而且很棒)。

关于android - 获取数据和传递给另一个 Activity 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33013387/

相关文章:

c++ - C++ 中单例的线程安全惰性构造

android - 如何用动画扩展布局高度?

android - Android 广播接收器内的线程

android - 如果通过 VS Code 运行,Flutter 运行卡在 "Installing build\...\app.apk"

java - 如何为 MPAndroidChart 添加数据

java - spring如何维护单例对象

java - 通过按按钮使 Textview 可见

python - 类型错误 : not all arguments converted during string formatting when inserting with parameters

mysql - 根据值更新数据库

ios - 为什么单例类可以作为普通类使用