更新到Google Play Services 9.0.1 Android

时间:2016-05-30 11:01:42

标签: android google-play-services

我的应用程序发布了很长时间。现在我正在进行更新,当我将我的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
}

并且日志显示没有错误。任何人都可以帮助我,告诉我这里有什么问题? 三江源。

2 个答案:

答案 0 :(得分:0)

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

Threads中所述:

  

当线程被阻止时,不会调度任何事件,包括绘制事件。从用户的角度来看,应用程序似乎挂起了。更糟糕的是,如果UI线程被阻止超过几秒钟(当前大约5秒),则向用户呈现臭名昭着的应用程序没有响应" (ANR)对话框。

此外,

  

对于您不应阻止UI线程的应用程序UI的响应性至关重要。如果您要执行的操作不是即时的,那么您应该确保在单独的线程中执行它们("后台"或"工作线程"线程)。

文档中进一步讨论了几种从Android已经提供的用于修复ANR问题的线程访问UI线程的方法。

答案 1 :(得分:0)

好吧结果我的本机代码出错了,导致了ANR状态。