为了账号安全,请及时绑定邮箱和手机立即绑定

尽管没有对代码进行任何更改,但 MainActivity 不再从 startActivity(i)

尽管没有对代码进行任何更改,但 MainActivity 不再从 startActivity(i)

Qyouu 2023-08-04 19:06:57
几天前,我的应用程序停止在多个设备上运行。该代码至少一年没有被触及(即:最近没有进行任何更改)。它从 SplashScreenActivity 开始,从 SQL 数据库下载一些数据,效果很好。之后,这些数据将putExtra发送到用于启动 MainActivity 的 Intent - 这就是应用程序突然关闭的地方。通过调试,我知道 Intent 仍然被正确创建,但在 MainActivity 中“ onCreate”未被调用。我不知道中间是什么以及为什么它停止工作,也许与依赖性有关?有任何想法吗?下面是 SplashScreen 的代码和 MainActivity 的 onCreate 方法,以及build.gradle我在其中进行了一些更改试图解决问题的(应用程序)(已弃用的编译更改为依赖项的实现和版本sdkVersion)。那并没有解决问题。构建.gradle:    apply plugin: 'com.android.application'        android {        compileSdkVersion 26        buildToolsVersion '26.0.2'        defaultConfig {            applicationId "com.myname.myapp"            minSdkVersion 19            targetSdkVersion 26            versionCode 14            versionName "1.51"            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"            multiDexEnabled true        }        buildTypes {            release {                minifyEnabled false                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            }        }        compileOptions {            targetCompatibility = 1.8            sourceCompatibility = 1.8        }    }        dependencies {        implementation fileTree(dir: 'libs', include: ['*.jar'])        androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {            exclude group: 'com.android.support', module: 'support-annotations'        })        implementation 'com.android.support:multidex:1.0.3'        implementation 'com.android.support:appcompat-v7:26.1.0'        implementation 'com.android.support:recyclerview-v7:26.1.0'        implementation 'com.google.android.gms:play-services:12.0.1'        testImplementation 'junit:junit:4.12'    }
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我找到了答案,它解释了尽管代码没有变化但行为发生变化的原因:

随着数据库随着时间的推移而增长,字符串的长度strResult超过了可以使用的最大长度IntentputStringArrayListExtra就我而言,我可以简单地减少数据量,但这显然不是所有情况下的解决方案。所有其他建议的代码更改都会带来更好的风格,所以感谢您的回答!


查看完整回答
反对 回复 2023-08-04
?
RISEBY

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);

}


查看完整回答
反对 回复 2023-08-04
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信