當前位置:首頁 » 安卓系統 » Android崩潰異常

Android崩潰異常

發布時間: 2022-06-08 00:30:48

Ⅰ 詭異,Unity在安卓運行崩潰問題,求助

在整個開發階段和測試階段,出現了很多預料之外的事情,比如size是1M多的json文件解析、高清圖片導致OOM、莫名其妙的崩潰等。這些意外無一不影響開發計劃,增大壓力,最直接的表現是晚上加班和周末加班。 寫代碼和修改代碼遠比想像中的難控制。用戶體驗增加了代碼的細節處理難度、邏輯處理難度,android莫名的崩潰增加解決bug的難度。就這次開發,總結了一些經驗。 測試人員經常會報告小米1手機運行壁紙軟體時會崩潰的問題,崩潰日誌是: java.lang.RuntimeException: Failed to register input channel. Check logs for details. at android.view.InputQueue.nativeRegisterInputChannel(Native Method) at android.view.InputQueue.registerInputChannel(InputQueue.java:92) at android.view.ViewRoot.setView(ViewRoot.java:570) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) at android.widget.Toast$TN.handleShow(Toast.java:411) at android.widget.Toast$TN$1.run(Toast.java:337) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:130) 根據日誌推測該崩潰是和Toast有關。可是問題就奇怪了,我在代碼中只調用Toast.makeTest(...).show(),為什麼會引起這個崩潰。然後根據測試人員的反饋,當設置壁紙成功後,會引起這個崩潰,而且測試人員是在頻繁的操作下報出來這個問題的。根據這個現象,推斷有可能以下兩個原因引起的,一是,設置壁紙引起桌面發生變化,桌面發生變化時彈出toast會導致崩潰;二是,頻繁不間斷的彈出toast會引起這個問題。而之後測試人員反饋了一個新的現象,當進行新浪微博分享失敗後(前提是該新浪微博帳號是有問題的),再去瀏覽壁紙圖片也導致了該崩潰,而且此現象僅出現了一次再也不復現。該bug最終是遺留解決。 針對這種問題,在以後的版本開發中肯定也會出現,怎麼避免它再次出現。我總結了從幾個方面做努力。先借來小米1手機來玩,學習手機發燒友的習慣和測試人員的思維,然後體驗小米1手機,對小米1要有更深入的認識;和小米進行溝通,還沒有認識牛逼的朋友在小米做開發,所以可以先在小米論壇上做活躍用戶,主動和對方和網友溝通;了解input channel是什麼功能,什麼機制,研究 anroid2.3的關於這塊的native代碼。 剛開始進入測試階段時,測試人員每天都會報告壁紙軟體頻繁崩潰的問題。對於一些簡單的崩潰問題,一般是空指針而且還復現,就不在這里說了。測試報告說,瀏覽壁紙圖片保存壁紙,預覽壁紙和設置壁紙時經常的崩潰,這種崩潰沒有規律可復現但是很頻繁出現。這種問題的原因是OOM,比如,在MX2手機上,桌面預覽要使用的點陣圖大小是1280 X 800 X 2 X 4位元組 約等於8M,軟體中的點陣圖各種處理(縮放、剪切、渲染、多個activity同時存在等)會導致內存使用量飆升到50多M,當超過64M左右時,軟體會報OOM錯誤。沒有徹底解決OOM的方法,網上有很多避免OOM的方法,比如延遲載入圖片、及時回收內存、弱引用等。另外在生成bitmap的地方要使用try 解決了這些崩潰問題後,還會有新的導致崩潰的原因。測試人員說中午吃完飯回來,打開壁紙軟體突然崩潰。分析這個現象後,找到原因是,長期待機情況下android殺掉了壁紙軟體的進程。但是疑問出現了,此時進程被殺掉了之後點擊app的icon,不是又重新打開了進程,重新運行了嗎,怎麼會崩潰呢。經過分析,發現有個詭異的地方是,android待機後把壁紙進程給殺掉了,但是該軟體的activity並沒有從task中刪除掉,所以當再點擊app的icon時,會執行task頂層的activity的onCreate,而onCreate里邊的一些東西還未初始化,會因為空指針而崩潰。 後來,測試人員報告了一個詭異的bug,安裝軟體後第一次打開軟體,歡迎界面的圖片顯示不出來,以後每次打開軟體歡迎界面的圖片都能打開出來。圖片是一個jpg文件,在raw中。最後找到原因是,在decode bitmap,scale bitmap時,其中要操作的一個變數imagewidth在第一次時是0,沒有賦值,之後再操作就不是0,賦值了。但是為什麼會這樣,最後找到原因了,imagewidth是一個全局靜態變數,該全局靜態變數在另外一個線程中會被賦值(賦上屏幕的寬度)。由於線程的非同步問題而導致第一次imagewidth是0。後來每次打開軟體,並不是進程重啟,而是activity重啟,imagewidth賦的值還在。

安卓系統為什麼會崩潰,說得詳細點

那你得找開發者,我也是用安卓,基本不崩潰。你的要麼手機不是正品,要麼就是機器配置不好,軟體方面的話,系統文件丟失誤刪,下載有毒應用,和一些root許可權操作,都有可能,最直接的可能是運存太小了

Ⅲ 如何解決android7.0及以上的許可權崩潰問題

我現在使用的是凈化大師這款軟體,它集系統深度凈化、內存回收、通知欄凈化、預裝應用卸載、應用許可權管理為一體,操作很簡單,即使是新手機用戶也可以熟練運用,操作簡單,並且可以選擇是否開啟「純凈模式」,開啟之後系統就會被自動優化,方便快捷

Ⅳ 為什麼Android應用異常後會自動重啟

1.Android是一種以Linux與JAVA為基礎的開放源代碼操作系統,主要使用於便攜設備。中國大陸地區較多人使用「安卓」。Android操作系統最初由Andy Rubin開發,被谷歌收購後則由Google公司和開放手機聯盟領導及開發,主要支持手機與平板。
Android本身是一個許可權分立的操作系統。在這類操作系統中,每個應用都以唯一的一個系統識別身份運行(Linux用戶ID與群組ID)。系統的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應用與應用,應用與系統隔離開。
2.Android應用異常後會自動重啟是Android應用異常後的安全警報!
所以你是用Android手機時偶爾會因為某些異常導致正在使用的應用出現異常並強制關閉並重啟,
3,解決此類問題你需要捕獲出現的異常並做處理。這些在你手機的設置中就可進行設置,主動權在你,在Java中有兩類異常,分別是Error和RuntimeException,前者是不需要我們去處理的,我們處理的往往是後者。那麼如何捕獲線程在運行時的異常呢,我們可以使用自定義類實現
Thread.UncaughtExceptionHandler 介面並復寫uncaughtException(Thread thread, Throwable ex)方法來實現對運行時線程進行異常處理。在Android中我們可以實現自己的Application類,然後實現 UncaughtExceptionHandler介面,並在uncaughtException方法中處理異常,這里我們關閉App並啟動我們需要的Activity,下面看代碼:
public class MyApplication extends Application implements
Thread.UncaughtExceptionHandler {
@Override
public void onCreate() {
super.onCreate();
//設置Thread Exception Handler
Thread.(this);
}

@Override
public void uncaughtException(Thread thread, Throwable ex) {
System.out.println("uncaughtException");
System.exit(0);
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}

}
最後需要在Manifest中配置Application的標簽android:name=".MyApplication",讓整個應用程序使用我們自定義的Application類,這樣就實現了當應用遇到崩潰異常時重啟應用的效果。
我們在任意一個Activity中主動拋出下面異常,就會發現應用遇到異常後重啟了,如果不處理的話,應用在遇到異常後就關閉了。
1.我們需要首先收集產生崩潰的手機信息,因為Android的樣機種類繁多,很可能某些特定機型下會產生莫名的bug。
2.將手機的信息和崩潰信息寫入文件系統中。這樣方便後續處理。
3.崩潰的應用需要可以自動重啟。重啟的頁面設置成反饋頁面,詢問 用戶是否需要上傳崩潰報告。
4.用戶同意後,即將2中寫入的崩潰信息文件發送到自己的伺服器。

Ⅳ android用timer做定時任務,崩潰的原因

在做定時任務的時候,有的同學可能能會用到Timer這個定時任務的輔助類,
但是使用它會有潛在的風險,風險如下,
(1)時間計算不準確問題
因為Timer是以絕對時間計算定時任務的,會受到系統時間的影響,如果在任務執行期間,更改了系統時間,那麼會
導致時間計算不準確問題,導致任務沒用按找預定的時間執行。
(2)只能單任務執行
簡單講就是,只能一次執行一個任務,如果前一個任務沒有執行完成,後一個任務是無法並行執行的,只能等待前一個任務執行完成
才能執行。也有可能會出現這樣的結果,前一個任務執行的時間太長,後幾個任務時間短,可能在一個時間段內執行了多個任務,任務又
沒有按照我們要執行的時間執行。
(3)非檢查異常導致非同步任務終止
Timer當在執行的過程中遇到非檢查異常的時候,會導致本次任務失敗,並且接下來的任務也無法被執行,Timer將會終止執行,這不是
我們要的結果,我們需要一套恢復機制。

Java5以後可以用下面的這個類來替代Time,並且解決了以上三個問題
java.util.concurrent.ScheledThreadPoolExecutor

那麼在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler機製做,
但是不建議使用Timer

Ⅵ android使用Thread.UncaughtExceptionHandler處理系統崩潰異常,uncaughtException方法被執行多次

電腦文件被破壞,啟動不了,系統崩潰了,就藍屏了,windows的老毛病了。

試下開機,按F8鍵,進安全模式,看能否正常進去(安全模式是系統最小載入服務啟動模式)
如果連安全模式都進不去,就趁早重裝系統。

只要重新安裝系統就可以正常,通常常規安裝系統方法:

1先設置U盤啟動,U盤啟動界面,用分區軟體給固態分區並且4G對齊,
2還原系統鏡像
3電腦重啟,會從固態啟動,並安裝驅動。
4安裝完成後,電腦重啟就可以使用了。

安裝系統稍有點復雜,上面只是簡單的手寫了點,還是太簡陋了,需要具體的重裝系統操作,你還是看下網上教程,很詳細。

Ⅶ Android程序在手機上崩潰

正常狀況,手機內存不夠或者你的程序有問題,建議下載個內存清理的程序比如360,qq管家之類的,多清理幾次就好了。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:945
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:742
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372