Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取数据和传递给其他活动的最佳方式是什么?_Android_Database_Singleton_Parcelable_Android Loader - Fatal编程技术网

Android 获取数据和传递给其他活动的最佳方式是什么?

Android 获取数据和传递给其他活动的最佳方式是什么?,android,database,singleton,parcelable,android-loader,Android,Database,Singleton,Parcelable,Android Loader,到目前为止,我创建的大多数应用程序都是从网络获取数据,并将其存储在一个单例类中,以便在活动之间共享数据。当我处理完这些数据后,我通常会清除那些将其设置为NULL的应用程序,它的工作非常好 我的问题是哪种方法更好?? 使用包裹 数据库的写入和查询 独生子女班 我们到底什么时候需要使用装载机??为什么我们不能通过加载程序共享数据 如果问题被重复。。。请忽略???这取决于您希望使用数据的方式。如果您希望在将来使用数据,如在应用程序被终止并重新启动后,您应该将其保存在数据库中。 我更喜欢parcelab

到目前为止,我创建的大多数应用程序都是从网络获取数据,并将其存储在一个单例类中,以便在活动之间共享数据。当我处理完这些数据后,我通常会清除那些将其设置为NULL的应用程序,它的工作非常好

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

  • 使用包裹
  • 数据库的写入和查询
  • 独生子女班
  • 我们到底什么时候需要使用装载机??为什么我们不能通过加载程序共享数据


    如果问题被重复。。。请忽略???

    这取决于您希望使用数据的方式。如果您希望在将来使用数据,如在应用程序被终止并重新启动后,您应该将其保存在数据库中。 我更喜欢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我只是添加了一些关于装载机的更多信息(最后一段)。我希望你觉得它有用。