2 回答

TA貢獻1829條經(jīng)驗 獲得超6個贊
我找到了答案,它解釋了盡管代碼沒有變化但行為發(fā)生變化的原因:
隨著數(shù)據(jù)庫隨著時間的推移而增長,字符串的長度strResult
超過了可以使用的最大長度Intent
。putStringArrayListExtra
就我而言,我可以簡單地減少數(shù)據(jù)量,但這顯然不是所有情況下的解決方案。所有其他建議的代碼更改都會帶來更好的風(fēng)格,所以感謝您的回答!

TA貢獻1856條經(jīng)驗 獲得超5個贊
您尚未共享 Logcat 錯誤堆棧,這將有助于進一步了解該問題。但似乎您正在嘗試從新線程而不是 UI 線程啟動活動,因此應(yīng)用程序崩潰,只需移出可運行 run 方法內(nèi)的代碼,并且不要啟動新線程。如果由于某種原因您希望代碼異步運行,請通過處理程序運行您的 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);
}
添加回答
舉報