更新至Google Play服务9.0.1后的每次发布ANR Android
问题描述:
我的应用发布了很长时间。现在我正在进行更新,当我将我的谷歌播放服务更新到9.0.1时,我的应用在每次启动时都会继续显示ANR状态,并向我展示完整的空白屏幕。 我所做的只是添加了更新所需的新依赖项。 这里是build.gradle
文件应用程序:更新至Google Play服务9.0.1后的每次发布ANR Android
apply plugin: 'com.android.application'android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId 'xxxxxxxxxxxxxxxxxxxxxx'
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "5.2"
ndk {
moduleName "Constants"
}
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}}dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.mcxiaoke.volley:library:1.0.18'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.android.gms:play-services-gcm:9.0.1'
compile 'com.google.android.gms:play-services-ads:9.0.1'
compile 'com.devbrackets.android:exomedia:2.5.6'
compile 'com.google.android.gms:play-services-analytics:9.0.1'}apply plugin: 'com.google.gms.google-services'
这里是应用层面build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.google.gms:google-services:3.0.0'
}}allprojects {
repositories {
jcenter()
}
}task clean(type: Delete) {
delete rootProject.buildDir
}
和日志中显示没有错误。任何人都可以帮助我解决这个问题吗? Thankyou。
答
好了,我在我的本地代码中导致ANR状态的错误。
答
由于日志显示没有错误,ANR可能是由主线程中的长操作或称为UI线程导致的。由于UI线程被阻止,您的应用程序无法处理其他用户交互。您可以做的解决方案是在工作线程中执行繁重的操作以释放UI线程。
如Threads提到:
当线程被阻塞,没有事件可以被分派,包括拉伸的事件。从用户的角度来看,应用程序似乎挂起。更糟糕的是,如果UI线程被阻塞超过几秒(目前约5秒),用户将看到臭名昭着的“应用程序无响应”(ANR)对话框。
此外,
这是您的应用程序的UI,你不会阻塞UI线程响应是至关重要的。如果您有要执行的操作不是即时的,则应确保在单独的线程(“后台”或“工作者”线程)中执行操作。
文档中进一步讨论了几种从其他线程访问UI线程的方法,Android已经提供了这些线程来解决ANR问题。
那么它变成我的NDK代码中的错误..它没有显示我在我的LogCat中,但调试后我发现它。但仍然感谢您的详细解答。 – awaistoor