当应用程序从暂停状态返回时,如何发现应用程序冻结原因? [英] How to spot app freeze causes when app is returning from pause state?

查看:50
本文介绍了当应用程序从暂停状态返回时,如何发现应用程序冻结原因?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序面临着一个非常奇怪的行为:

My App is facing a really weird behavior:

  1. 应用正常启动;
  2. 我将应用程序留给另一个或返回手机的主屏幕;
  3. 当我尝试返回上一个应用程序实例时,它一直挂起,直到我收到应用程序无响应,强制关闭它?";

我知道这听起来像是一些内存泄漏或循环卡住的问题,但是这种行为是完全随机的(有时我执行上述步骤两次,但都遇到了问题,有时我会重复执行十次,直到得到错误).logcat中不会引发任何异常.在监视器中,分配的内存永远不会爆炸,并且保持在可用内存以下.我使用了内存分析器,但报告中没有显示任何异常.

I know it sounds like some memory leak or loop stuck problem, but this behavior is complety random (sometimes I perform the steps above twice and I get the problem, other times I do it like ten times until I get the error). No Exception is thrown in the logcat. In the Monitor, alocated memory never explodes and it keeps below the free memory. I've used the memory analizer and nothing weird is shown in report.

我已经注意到,当我在活动"中使用加载程序微调器时,执行上述步骤以使App崩溃所需的次数减少了-有时执行一次会使应用程序崩溃.

I've noticed already that when I use loader spinners in my Activity, the number of times needed performing the steps above in order for the App to crash decreases - sometimes doing them once makes the app crash.

有人建议我该怎么做,以找出可能导致此问题的原因吗?

Does anyone have a suggestion of what can I do in order to figure out what might be causing this problem?

谢谢.

此行为可能在应用程序的任何活动中发生,Logcat和代码可以在下面找到:

This behavior can happen in any of the App's activities, Logcat and code can be foundbelow:

我所有的活动都是该模板的后代:

All my activities are descendant of this template:

public abstract class ActivityTemplate extends AppCompatActivity {

    private Boolean isRunning = Boolean.TRUE;

    private ToolbarManager mToolbarManager;
    private ActivitySetup mSetup;

    public abstract ActivitySetup setUpActivity();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mToolbarManager = new ToolbarManager();
        mSetup = setUpActivity();
        setContentView(mSetup.getContentView());
        ButterKnife.bind(this);
        prepareToolbar();
        registerForEvents();
        this.startResources();
    }

    private void prepareToolbar() {
        if (mSetup.getHasToolbar()) {
            mToolbarManager.initToolbar(this, mSetup.getTitle(), R.id.toolbar, R.color.textPrimary);
            if (mSetup.getDefaultReturnBehavior()) {
                mToolbarManager.setNavigationReturnBehavior();
            }
            mToolbarManager.prepareNavigationBehavior(mSetup.getNavigationIcon(), mSetup.getOnNavigationItemClicked());
        }
    }

    public void startResources() {
    }

    @Override
    public void onDestroy() {
        this.unregisterForEvents();
        super.onDestroy();
    }

    @Override
    protected void onPause() {
        super.onPause();
        this.isRunning = Boolean.FALSE;
    }

    @Override
    protected void onResume() {
        super.onResume();
        this.isRunning = Boolean.TRUE;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }

    public void registerForEvents() {
        Map<EventCatalog, TaskExecutor> executors = this.setEventHandlers();
        if (null != executors && executors.size() > 0) {
            for (EventCatalog event : executors.keySet()) {
                NotificationCenter.RegistrationCenter.registerForEvent(event, executors.get(event));
            }
        }
    }

    public void unregisterForEvents() {
        Map<EventCatalog, TaskExecutor> executors = this.setEventHandlers();
        if (null != executors && executors.size() > 0) {
            for (EventCatalog key : executors.keySet()) {
                NotificationCenter.RegistrationCenter.unregisterForEvent(key, executors.get(key));
            }
        }
    }

    public boolean isRunning() {
        return this.isRunning;
    }

    public Toolbar getToolbar() {
        return mToolbarManager.getToolbar();
    }

    public Map<EventCatalog, TaskExecutor> setEventHandlers() {
        return null;
    }
}



06-13 10:39:11.258 25215-25271/br.com.gogame I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build: Nondeterministic_AU_msm8974_LA.BF.1.1.3_RB1__release_AU (I3193f6e94a)
                                                               OpenGL ES Shader Compiler Version: E031.28.00.02
                                                               Build Date: 10/09/15 Fri
                                                               Local Branch: mybranch15039904
                                                               Remote Branch: quic/LA.BF.1.1.3_rb1.2
                                                               Local Patches: NONE
                                                               Reconstruct Branch: NOTHING
    06-13 10:39:11.274 25215-25271/br.com.gogame I/OpenGLRenderer: Initialized EGL, version 1.4
    06-13 10:39:11.315 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:11.315 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:11.601 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:11.601 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:11.640 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:11.640 25215-25215/br.com.gogame E/RecyclerView: No adapter attached; skipping layout
    06-13 10:39:20.864 25215-25241/br.com.gogame E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/br.com.gogame-1/base.apk"],nativeLibraryDirectories=[/data/app/br.com.gogame-1/lib/arm, /data/app/br.com.gogame-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
    06-13 10:39:25.202 25575-25575/br.com.gogame:background_crash E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.android.gms.crash.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/br.com.gogame-1/base.apk"],nativeLibraryDirectories=[/data/app/br.com.gogame-1/lib/arm, /data/app/br.com.gogame-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
    06-13 10:39:25.239 25575-25575/br.com.gogame:background_crash D/ChimeraCfgMgr: Reading stored module config
    06-13 10:39:25.299 25575-25575/br.com.gogame:background_crash I/DynamiteModule: Considering local module com.google.android.gms.crash:0 and remote module com.google.android.gms.crash:2
    06-13 10:39:25.299 25575-25575/br.com.gogame:background_crash I/DynamiteModule: Selected remote version of com.google.android.gms.crash, version >= 2
    06-13 10:39:25.312 25575-25575/br.com.gogame:background_crash W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi-v7a
    06-13 10:39:25.312 25575-25575/br.com.gogame:background_crash W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi
    06-13 10:39:25.313 25575-25575/br.com.gogame:background_crash D/ChimeraFileApk: Primary ABI of requesting process is armeabi-v7a
    06-13 10:39:25.314 25575-25575/br.com.gogame:background_crash D/ChimeraFileApk: Classloading successful. Optimized code found.
    06-13 10:39:25.334 25575-25575/br.com.gogame:background_crash I/FirebaseCrashReceiverServiceImpl: FirebaseCrashReceiverServiceImpl created by ClassLoader com.google.android.chimera.container.internal.DelegateLastPathClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_chimera/m/00000002/DynamiteModulesC_GmsCore_prodmnc_xxhdpi_release.apk"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi-v7a, /data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi, /vendor/lib, /system/lib]]]
    06-13 10:39:25.340 25575-25575/br.com.gogame:background_crash D/FirebaseCrashReceiverServiceImpl: onCreate
    06-13 10:39:25.345 25575-25575/br.com.gogame:background_crash I/DynamiteModule: Considering local module com.google.android.gms.flags:0 and remote module com.google.android.gms.flags:1
    06-13 10:39:25.345 25575-25575/br.com.gogame:background_crash I/DynamiteModule: Selected remote version of com.google.android.gms.flags, version >= 1
    06-13 10:39:25.379 25575-25575/br.com.gogame:background_crash I/FirebaseCrashSenderServiceImpl: FirebaseCrashSenderServiceImpl created by ClassLoader com.google.android.chimera.container.internal.DelegateLastPathClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_chimera/m/00000002/DynamiteModulesC_GmsCore_prodmnc_xxhdpi_release.apk"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi-v7a, /data/user/0/com.google.android.gms/app_chimera/m/00000002/n/armeabi, /vendor/lib, /system/lib]]]
    06-13 10:39:25.379 25575-25575/br.com.gogame:background_crash D/FirebaseCrashSenderServiceImpl: onCreate
    06-13 10:40:46.438 25215-25215/br.com.gogame D/FirebaseApp: Notifying background state change listeners.
    06-13 10:40:46.469 25215-25271/br.com.gogame E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9fb34d0
    06-13 10:40:47.348 25215-26924/br.com.gogame I/DynamiteModule: Considering local module com.google.android.gms.tagmanager:1 and remote module com.google.android.gms.tagmanager:2
    06-13 10:40:47.348 25215-26924/br.com.gogame I/DynamiteModule: Selected remote version of com.google.android.gms.tagmanager, version >= 2
    06-13 10:40:47.428 25215-25215/br.com.gogame D/FirebaseApp: Notifying background state change listeners.
    06-13 10:40:47.738 25215-26924/br.com.gogame W/GoogleTagManager: Tag Manager's event handler WILL NOT be installed (no container loaded)
    06-13 10:40:48.273 25215-25271/br.com.gogame E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9f87b18
    06-13 10:40:48.296 25215-25215/br.com.gogame D/FirebaseApp: Notifying background state change listeners.
06-13 10:44:08.361 25215-25221/br.com.gogame I/art: Thread[2,tid=25221,WaitingInMainSignalCatcherLoop,Thread*=0xb9ce2a10,peer=0x12d270a0,"Signal Catcher"]: reacting to signal 3
06-13 10:44:08.713 25215-25221/br.com.gogame I/art: Wrote stack traces to '/data/anr/traces.txt'

编辑2

该问题似乎与Firebase和Google Services的使用有关,但是我的App都需要这两个问题.我使用它们的方式是:

EDIT 2

It looks like this issue is related with the use of Firebase and Google Services, however, I need both in my App. The way I'm using them is:

在最上面的gradle文件中:classpath'com.google.gms:google-services:3.0.0'

On top gradle file: classpath 'com.google.gms:google-services:3.0.0'

在我的应用gradle文件上:

On my App gradle file:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    dexOptions {
        javaMaxHeapSize "4g"
    }

    defaultConfig {
        applicationId "br.com.gogame"
        minSdkVersion 21
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:1.10.19'

    // GOOGLE LIBRARIES
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:recyclerview-v7:23.4.0'
    compile 'com.android.support:cardview-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    compile 'com.google.guava:guava:18.0'
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.google.dagger:dagger:2.1'
    compile 'com.android.volley:volley:1.0.0'

    // APACHE LIBRARIES
    compile 'org.apache.httpcomponents:httpmime:4.0-alpha3'

    // OWN THIRD LIBRARIES
    compile 'br.com.instachat:emoji-library:1.0.6'
    compile 'br.com.edsilfer:kiwi:1.0.8'

    // THIRD PART LIBRARIES
    compile 'com.mikhaellopez:circularimageview:2.0.2'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.github.vajro:MaterialDesignLibrary:1.6'
    compile 'com.ogaclejapan.smarttablayout:library:1.6.0@aar'
    compile 'com.github.rey5137:material:1.2.2'
    compile 'com.appyvet:materialrangebar:1.3'
    compile 'com.github.afollestad.material-dialogs:core:0.8.5.6@aar'
    compile 'com.wang.avi:library:1.0.5'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.mikepenz:aboutlibraries:5.6.5@aar'
    compile 'com.jakewharton:butterknife:8.0.1'
    compile 'com.wdullaer:materialdatetimepicker:2.3.0'
    compile 'javax.inject:javax.inject:1'
    compile 'com.github.satyan:sugar:1.5'
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.15'
    compile 'com.yalantis:ucrop:1.5.0'

    apt 'com.jakewharton:butterknife-compiler:8.0.1'
    apt 'com.google.dagger:dagger-compiler:2.1'

    provided 'javax.annotation:jsr250-api:1.0'
}

apply plugin: 'com.google.gms.google-services'

推荐答案

好,所以按照@ApplicationDeveloper提示,我删除了 compile'c​​om.google.android.gms:play-services:9.0.0'来自我的项目,它不在我的主项目中,而是在一个库模块中.它已经解决了这个问题.

Ok, so following @ApplicationDeveloper tip, I've removed compile 'com.google.android.gms:play-services:9.0.0' from my project, it wasn't in my main project, it was in a library module. It has solved the question.

这篇关于当应用程序从暂停状态返回时,如何发现应用程序冻结原因?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆