2016-06-13 40 views
2

我的應用程序面臨着一個非常奇怪的行爲:如何在應用程序從暫停狀態返回時發現應用程序凍結原因?

  1. 應用程序正常啓動;
  2. 我離開應用程序的另一個或返回到手機的主屏幕;
  3. 當我嘗試回到以前的應用程序實例時,它會掛起,直到我收到「應用程序沒有響應,強制它關閉?」;

我知道這聽起來似乎有些內存泄​​漏或環卡住的問題,但這種行爲是complety隨機的(有時我進行兩次以上的步驟,我得到的問題,其他時間我這樣做十次,直到我錯誤)。 logcat中沒有引發異常。在監視器中,分配的內存永遠不會爆炸,並且保持在可用內存之下。我使用了內存分析器,報告中沒有顯示任何奇怪的東西。

我已經注意到,當我在我的Activity中使用loader spinners時,需要執行上述步驟才能使應用程序崩潰的次數減少 - 有時一次會導致應用程序崩潰。

有沒有人有一個建議,我能做些什麼來弄清楚什麼可能會導致這個問題?

謝謝。

編輯

可以在任何應用程序的活動,出現這種狀況,logcat的和代碼可foundbelow:

我所有的活動都是這個模板的後裔:

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' 

EDIT 2

看起來這個問題與使用Firebase和Google服務有關,但是,我需要在我的應用程序中使用這兩個服務。我使用他們的方法是:

在頂部gradle這個文件: 類路徑 'com.google.gms:谷歌服務:3.0.0'

我的應用程序文件的gradle:

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:[email protected]' 
    compile 'com.github.rey5137:material:1.2.2' 
    compile 'com.appyvet:materialrangebar:1.3' 
    compile 'com.github.afollestad.material-dialogs:core:[email protected]' 
    compile 'com.wang.avi:library:1.0.5' 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'com.mikepenz:aboutlibraries:[email protected]' 
    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' 
+1

顯示您的代碼和Logcat。 –

+1

問題是偏題:*尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。 ..所以你會得到脫離主題的答案:停止與StrictMode混淆並捕獲networkonmainthread異常...或者如果兩者都檢查兩次:從互聯網獲取數據並在非UI線程上完成解析...還使用帶有回收器模式的列表(像RecyclerView,ListView等)並正確使用它 – Selvin

+0

我編輯了問題標題並添加了logcat和代碼片段 –

回答

2

好的,所以下面的@ApplicationDeveloper提示,我已經從我的項目中刪除了compile 'com.google.android.gms:play-services:9.0.0',它不在我的主項目中,它在一個庫模塊中。它解決了這個問題。