Android開發-建立線程崩潰

來源:互聯網
上載者:User

標籤:targe   修改   實現   sage   添加   解決問題   apk   public   prepare   

  一直不滿意車機不能實現屏保,最近發現可以通過設定亮度實現,顧萌生了自己寫程式的來實現的念頭,遂修改原來練手的app。畢竟過去了1年,各類程式、sdk都已經更新了不知道多少版本。經曆了痛苦的升級、更新,終於沒能在原有的代碼上直接升級,還是建立一個工程,複製原來的代碼來產生app。

  原來可以跑的app,竟然崩潰,而且還不能截獲異常。通過debug,發現崩潰跟建立了一個線程有關,網上度了一下,發現還是能夠捕獲此類異常,原文:Android UncaughtExceptionHandler捕獲線程崩潰異常。

  我原來的代碼僅一句:new downloadApkThread().start();

  修改為:

1     Thread thread = new downloadApkThread();2         thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {3             @Override4             public void uncaughtException(Thread thread, Throwable ex) {5             //TODO6                 System.out.println(ex.getLocalizedMessage());7             }8         });9         thread.start();

  在行6處斷點,發現線程崩潰的原因是:“Can‘t create handler inside thread that has not called Looper.prepare()”。繼續在網上度,解釋非常多,原因沒仔細看,大概跟主從線程之間的訊息分發有關,發揚一貫的囫圇吞棗精神,找了個能解決問題的最簡單方案用了:Android開發報錯 Can not create handler inside thread t

  我的從線程代碼中出現使用了Toast之類的方法:“Toast.makeText(mContext, mContext.getResources().getString(R.string.soft_update_fail_downloadapk), Toast.LENGTH_LONG).show();”之類的代碼時,就在前面加Looper.prepare();,後面加Looper.loop();。當然,還要記得import android.os.*;

  解決了兩個問題,線程崩潰的異常截獲,據原文描述,可以在主activity的OnCreate方法中添加下面代碼,就可以截獲所有線程發生時的異常,聽起來挺美好,不過我沒試,以後有需要再說吧。

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {public void uncaughtException(Thread thread, Throwable ex) {//任意一個線程異常後統一的處理System.out.println(ex.getLocalizedMessage());finish();}});

  至於第二個問題,不知道為何原來的代碼沒問題,現在就出現問題,也許是android studio和SDK升級了所致?反正沒時間深究。

Android開發-建立線程崩潰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.