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.
如果您要发送的数据非常大(大约 1MB)。最好的传递方式是将其存放在ActivityA中的持久化存储中,并在ActivityB中访问。
通过 Parcerable/Serializable 传递它的方法是有风险的,因为当您TransactionTooLargeException尝试传递大约 1MB 的数据时可能最终会遇到这种情况。
通过 Singleton 类传递它的方法更糟,因为当您在 ActivityB 中并且重新创建应用程序时(它在后台很长/内存很低)您将从单例中丢失数据(重新创建进程)并且没有人会设置它,ActivityB将被启动并且它不会有来自 AcitivityA 的数据(因为它从未被创建)。
一般来说,你不应该通过意图传递数据,你应该传递参数/标识符,然后你可以用来从 db/network/etc 获取数据。