哪种方式更适合将大量数据从一个活动传递到另一个活动 - android?

1 android android-intent android-activity

我需要将大量数据从一个activity传递到另一个activity,哪种方式更好?

第一种方式(例如):

ArrayList<myModel> myList = new ArrayList<myModel>();
intent.putExtra("mylist", myList);
Run Code Online (Sandbox Code Playgroud)

第二种方式(例如):

ActivityTwo act = new ActivityTwo();
act.getDataMethod(listValues);
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

在另一个activity(ActivityTwo)中,我从getDataMethod.

Rad*_*ekJ 6

如果您要发送的数据非常大(大约 1MB)。最好的传递方式是将其存放在ActivityA中的持久化存储中,并在ActivityB中访问。

通过 Parcerable/Serializable 传递它的方法是有风险的,因为当您TransactionTooLargeException尝试传递大约 1MB 的数据时可能最终会遇到这种情况。

通过 Singleton 类传递它的方法更糟,因为当您在 ActivityB 中并且重新创建应用程序时(它在后台很长/内存很低)您将从单例中丢失数据(重新创建进程)并且没有人会设置它,ActivityB将被启动并且它不会有来自 AcitivityA 的数据(因为它从未被创建)。

一般来说,你不应该通过意图传递数据,你应该传递参数/标识符,然后你可以用来从 db/network/etc 获取数据。