Android - TransactionTooLargeException

时间:2017-12-22 04:04:36

标签: android exception

  

ProcessRecord中的异常抛出启动活动{3c67ecf8080:com.example / u0a171}   android.os.TransactionTooLargeException:数据包大小为572488字节

传递数据

Intent intent = new Intent(activity, SearchListActivity.class);
intent.putExtra(HRConstants.SEARCHLIST, searchResponse);
startActivity(intent);

获取数据

Intent intent = getIntent();
searchResponse = intent.getParcelableExtra(HRConstants.SEARCHLIST);
searchLists = searchResponse.getSearchResults();

我的minSdkVersion为15,targetSdkVersion为26。

该回复包含1736个项目,后跟一个例外。它可以用更少的项目工作。

2 个答案:

答案 0 :(得分:3)

这是因为Android中的意图可以携带不超过1MB的数据。一个解决方法是放置" searchResult"在公共静态对象中

Intent intent=new Intent(activity,SearchListActivity.class);
//intent.putExtra(HRConstants.SEARCHLIST,  searchResponse);
YourActivity.SearchResponse = searchResponse;
startActivity(intent);

在SearchListActivity中,而不是

getIntent.getExtras();

您可以访问现在保存到

的对象
List<Search> list = YourActivity.SeachResponse;

希望这有帮助

答案 1 :(得分:0)

使用Intent.putParcelableArrayListExtra()代替putExtra()和getParcelableArrayListExtra()而不是getParcelableExtra()。你也可以失去演员阵容,这可能是它正在爆炸的地方