我的应用程序发布了很长时间。现在我正在进行更新,当我将我的Google Play服务更新到9.0.1时,我的应用程序会在每次启动时继续显示ANR状态,向我显示完整的空白屏幕。
我所做的就是添加更新所需的新依赖项。
这是app的build.gradle
文件:
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
}
并且日志显示没有错误。任何人都可以帮助我,告诉我这里有什么问题? 三江源。
答案 0 :(得分:0)
由于日志没有显示错误,因此ANR可能是由主线程中的长操作或称为UI线程引起的。因为UI线程被阻止,您的应用程序无法处理其他用户交互。您可以做的解决方案是在工作线程中执行繁重的操作以释放UI线程。
如Threads中所述:
当线程被阻止时,不会调度任何事件,包括绘制事件。从用户的角度来看,应用程序似乎挂起了。更糟糕的是,如果UI线程被阻止超过几秒钟(当前大约5秒),则向用户呈现臭名昭着的应用程序没有响应" (ANR)对话框。
此外,
对于您不应阻止UI线程的应用程序UI的响应性至关重要。如果您要执行的操作不是即时的,那么您应该确保在单独的线程中执行它们("后台"或"工作线程"线程)。
文档中进一步讨论了几种从Android已经提供的用于修复ANR问题的线程访问UI线程的方法。
答案 1 :(得分:0)
好吧结果我的本机代码出错了,导致了ANR状态。