2012-09-28 34 views
2

我開發與不少線程的應用程序,它經常死機至今,每當我打開Eclipse中的新版本,它似乎創建一個新的進程。當活動崩潰,過程保持活着,我不能殺死它

我似乎無法找到殺死舊流程的方法,但它們並未在正在運行的應用中顯示。

我可以看到,我在進程列表中有多個與我的應用程序相關的進程(「ps」命令)。

有沒有辦法確保應用程序進程實際上死於崩潰?

回答

-1

你可以殺死你的應用程序的過程:

System.exit(1); 

它才能知道當你的應用程序崩潰(這是不被捕獲的異常),你需要定義:

Thread.setDefaultUncaughtExceptionHandler(new CustomUncaughtExceptionHandler()); 

在你主線程。

CustomUncaughtExceptionHandler是:

public class CustomUncaughtExceptionHandler implements UncaughtExceptionHandler 
{ 
    private UncaughtExceptionHandler defaultUEH; 

    public CustomUncaughtExceptionHandler() 
    { 
     this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); 
    } 

    public void uncaughtException(Thread t, Throwable e) 
    {  
     // Put system.exit here 
     if (defaultUEH != null) 
     { 
      defaultUEH.uncaughtException(t, e); 
     } 
     else 
     { 
      this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); 
      defaultUEH.uncaughtException(t, e); 
     } 
    } 

}

+0

這不起作用,應用模具,從Eclipse的替換它的時候,但過程留下來,即使我真的卸載它。也許這個異常是在另一個線程中,你認爲我應該把這個處理程序放在其他線程中嗎? –

1

你嘗試過這個android.os.Process.killProcess(android.os.Process.myPid());它可以殺死你的進程