2017-10-14 61 views
0

我的應用程序在返回START_STICKY後立即崩潰。我的應用程序崩潰沒有日誌貓異常或任何錯誤信息?

我有一個前臺服務我的應用程序:

public class MyService extends Service { 

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if (intent != null) { 
      if (intent.getAction().equals(STARTFOREGROUND_ACTION)) { 
       // Code to create/update notification and start processing goes here 
      } else if (intent.getAction().equals(ANOTHER_ACTION)) {    
       // Code to create/update notification and do another processing 
      } else if (null != intent && intent.getAction().equals(STOPFOREGROUND_ACTION)) { 
      stopForeground(true); 
      stopSelf(); 
     } 
     } 

     return START_STICKY; // Last reference point in debugger after which application crashes 
    } 

    } 

我試着調試調試的只剩下最後一點返回START_STICKY;特別是STOPFOREGROUND_ACTION信號之後,它會崩潰。

沒有錯誤,應用程序日誌中顯示的警告找不到可能出錯的地方。

我能做些什麼來解決這個問題呢是我停止前臺服務的方式是錯誤的,我還能做些什麼來獲得更多的應用程序特定日誌。

我檢查我的代碼到處都是,我捕捉異常,並如下記錄他們:

try { 
      // Code expected to throw error or exception 
     } catch (Exception e) { 
      Log.e(TAG, Log.getStackTraceString(e)); 
     } 

在我繞過例外,他們被緩存並記錄處處應用的地方。

一些我看的時候關閉所有過濾器並選擇在日誌貓詳細選項的錯誤:

1] `A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)` 

2] com.my.test.MyActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9

3] [Application Error: com.my.test](this:0xb28d3c00,id:809,api:1,p:933,c:252) new GraphicBuffer needed

4] I/WindowState: WIN DEATH: Window{41e99c5 u0 com.my.test.MyActivity}

回答

0

由於沒有人迴應,我設法找出問題,問題是

A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910) 

由於線程用盡了對MediaRecorder的引用服務。我正在停止我的服務如下:

stopForeground(true); 
stopSelf(); 

哪個(上圖)是停止服務的正確方法。但在停止服務之前,我正在發佈並停止MediaRecorder。由於MediaRecorder對象仍然可以在release(之後被線程外部服務訪問),所以任何MediaRecorder方法調用都會導致上述錯誤被拋出,並且與本機代碼而不是Java代碼相關,因此很難追查到。還有其他原因,下面的問題這個錯誤檢查:

Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). How can it be tracked down?

我的問題,因爲personne3000this問題提出意見的解決。

相關問題