【问题标题】:How to send large json data through intent in android如何在android中通过intent发送大型json数据
【发布时间】:2017-02-01 01:54:17
【问题描述】:

我已经知道如何使用 Intent 在活动之间发送数据,问题是,我的服务器请求返回一个 ArrayList 字符串 base64 中的图像,我注意到一个大字符串使应用程序崩溃,还有其他方法可以做这?这是我通常的做法:

1 个活动:

String passing_data = new Gson().toJson(user);
Intent intent = new Intent(activity,UserAdsView.class);
intent.putExtra("passed_data",passing_data);
activity.startActivity(intent);

2 活动:

String target = getIntent().getStringExtra("passed_data");
UserModelView userModelView = new Gson().fromJson(target,UserModelView.class);

它不会在控制台或其他东西中显示任何错误,它只是崩溃,然后重新打开以前的活动。谢谢!

【问题讨论】:

  • 将图像保存到文件系统并在意图中传递文件名?
  • 在我的情况下,这是一个“临时”图像,在第一个 Activity 中它显示一个带有一些信息的 CardView 和一个图像,当我单击该项目时,会启动一个带有这些附加信息的新 Activity包括“stringsImagesArray”在内的信息,但我无法想象!
  • 您可以在第二个活动中再次向服务器请求,而不是从第一个活动中传递值。
  • 即使是临时的,您也可以将其保存在磁盘上,并在不再需要后将其删除

标签: java android


【解决方案1】:

嗯。你什么意思?您是要传递 JSON 对象还是要传递数组列表?

我猜你需要一个包和一个序列化程序。试试这样的。

    // Create your new Intent
    Intent intent = new Intent(activity,UserAdsView.class);
    //create a bundle
    Bundle b = new Bundle();
    //when you add a list of objects (JSON or Otherwise), use a serializer
    b.putSerializable("passed_data", passing_data);

    intent.putExtras(b);
    startActivity(intent);

那么在你的新活动中你需要这样的东西:

    ArrayList<String> target = (ArrayList<String>) b.getSerializable("passed_data");

【讨论】:

  • 数组列表是一个属性,没有分开
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多