我的应用程序在返回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));
}
在我绕过异常的应用程序中没有地方可以缓存并记录到处。
我在禁用所有过滤器并在log cat上选择详细选项时看到的一些错误:
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 :(得分: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?
由于personne3000对this问题的评论,我的问题已解决。