this answer에서 언급 한 것처럼 전역 예외 처리 서비스를 설정하려고합니다. 이 방법은 충돌 후, 내 사용자 지정 Thread.UncaughtExceptionHandler
의 코드가 성공적으로 실행되지 않을 수 있기 때문에 논리적 소리, 두 응용 프로그램이 안정된 상태 나 때문에하지 않을 수 있기 때문에 프로세스가 OS에 의해 살해되기 전에 시간이 충분하지 않을 수 있습니다.Thread.UncaughtExceptionHandler에서 서비스를 시작 하시겠습니까?
불행하게도,이 방법은 그것이 너무 살해되도록 서비스가 동일한 프로세스에서 실행하기 때문에 작동하지 않습니다. 처리기의 uncaughtException()
에서 서비스를 시작하려면 어떻게해야합니까? 서비스를 완전히 별도의 프로세스로 시작하도록 할 수 있습니까?
이 같은 Application
에서 내 사용자 지정 기본 (VM 수준) 예외 핸들러를 설정 해요 : 내 사용자 지정 처리기에서
public class MyApp extends Application {
@Override
public void onCreate() {
Thread.setDefaultUncaughtExceptionHandler(
MyExceptionReporter.getInstance(this));
...
, 나는 실행하고있어이 같은 서비스 :
final Intent i = new Intent(MyExceptionService.INTENT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(MyExceptionService.EXTRA_STACK_TRACE,
Log.getStackTraceString(ex));
mContext.startService(i);
서비스는 AndroidMaifest.xml
파일에 declated 및 다른 응용 프로그램에서에서 잘 실행됩니다.
당신의 선생님은 내 인생을 저장 – javorosas