2 回答
TA贡献1829条经验 获得超6个赞
我找到了答案,它解释了尽管代码没有变化但行为发生变化的原因:
随着数据库随着时间的推移而增长,字符串的长度strResult
超过了可以使用的最大长度Intent
。putStringArrayListExtra
就我而言,我可以简单地减少数据量,但这显然不是所有情况下的解决方案。所有其他建议的代码更改都会带来更好的风格,所以感谢您的回答!
TA贡献1856条经验 获得超5个赞
您尚未共享 Logcat 错误堆栈,这将有助于进一步了解该问题。但似乎您正在尝试从新线程而不是 UI 线程启动活动,因此应用程序崩溃,只需移出可运行 run 方法内的代码,并且不要启动新线程。如果由于某种原因您希望代码异步运行,请通过处理程序运行您的 Runnable。下面是片段
if (isOnline()) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_users), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDate), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDriverID), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_passengersByDate), "0", getString(R.string.url_receive), getmAccessCode()));
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.putStringArrayListExtra("tableContents", strResult);
startActivity(i);
finish();
}
},1000);
}
添加回答
举报