2016-05-30 63 views
1

我的应用发布了很长时间。现在我正在进行更新,当我将我的谷歌播放服务更新到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。

回答

0

好了,我在我的本地代码中导致ANR状态的错误。

0

由于日志显示没有错误,ANR可能是由主线程中的长操作或称为UI线程导致的。由于UI线程被阻止,您的应用程序无法处理其他用户交互。您可以做的解决方案是在工作线程中执行繁重的操作以释放UI线程。

Threads提到:

当线程被阻塞,没有事件可以被分派,包括拉伸的事件。从用户的角度来看,应用程序似乎挂起。更糟糕的是,如果UI线程被阻塞超过几秒(目前约5秒),用户将看到臭名昭着的“应用程序无响应”(ANR)对话框。

此外,

这是您的应用程序的UI,你不会阻塞UI线程响应是至关重要的。如果您有要执行的操作不是即时的,则应确保在单独的线程(“后台”或“工作者”线程)中执行操作。

文档中进一步讨论了几种从其他线程访问UI线程的方法,Android已经提供了这些线程来解决ANR问题。

+0

那么它变成我的NDK代码中的错误..它没有显示我在我的LogCat中,但调试后我发现它。但仍然感谢您的详细解答。 – awaistoor

相关问题