我有一个奇怪的问题。我正在网上浏览,但没有找到答案。我仍然是android编程的初学者。让我们开始吧:

我要做的就是用一些数据调用第二个Activity。它适用于较小的数据,但是如果数据变大,则第二个“ Activity ”将不会显示,第一个 Activity 将结束。
这是调用方法的代码:

Intent intent = new Intent(ActivitySearch.this,ActivityResults.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("data", searchList);
intent.putExtras(bundle);
startActivity(intent);

接收数据的部分并不重要。即使我不尝试阅读 bundle 软件,也不会调用该 Activity 。我用以下几行进行了测试:
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("DEBUG","ActivityResult::onCreate()");
super.onCreate(savedInstanceState);
OnCreate()永远不会被调用。

也许你们中的一个有个主意...
感谢您的帮助!

编辑:至少我忘记了:这仅在ICS下发生。该应用程序的工作原理类似于带有 Gingerbread 和弗洛约的糖霜。

Edit2:Logcat
10-10 14:49:46.951: D/OpenGLRenderer(21696): Flushing caches (mode 0)
10-10 14:49:47.011: V/ActivityThread(22429): com.example.amazonsearch white listed for hwui
10-10 14:49:50.821: W/IInputConnectionWrapper(21696): showStatusIcon on inactive InputConnection

最佳答案

您可能会收到TransactionTooLargeException

如google android guide所建议,您可以使用静态字段或单例在 Activity 之间共享数据。

他们建议它“用于在短时间内共享复杂的非持久性用户定义对象”

从您的代码看来,这正是您所需要的。

因此,您在ActivitySearch.class中的代码可能类似于以下内容:

ActivityResults.data = searchList;
Intent intent = new Intent(ActivitySearch.this,ActivityResults.class);
startActivity(intent);

然后,您可以在启动后从ActivityResults Activity 中的任何位置访问ActivityResults.data。

对于需要在用户 session 之间共享的数据,建议不要使用静态字段,因为当应用程序在后台运行时(如果框架需要释放资源),应用程序进程可能会被android框架杀死并重启。在这种情况下,所有静态字段都将重新初始化。

07-24 09:49
查看更多