編輯:關於Android編程
對android應用而言最常出現的異常是Force close和ANR(Application is not response).
對於這兩類錯誤而言,應用是可以進行相關處理的。
一 Forceclose這類問題主要通過Thread.UncaughtExceptionHandler這個類來捕獲異常。通過實現類裡面的方法uncaughtException來實現應用在捕獲到異常後進行相關的處理。一般這裡處理基本放在應用的Application類中。為了方便大家進行相關處理,我這裡寫了個類,大家直接在Application回調即可。
new ExceptionHandler(mContext).setFCListener(new ExceptionHandler.FCListener() {
@Override
public void onFCDispose(Throwable paramThrowable) {
Log.d(TAG, onFCListerner enter!!!);
new Thread(){
public void run(){
Looper.prepare();
Toast.makeText(mContext, APP is Force Close do what you want!, Toast.LENGTH_LONG).show();
Looper.loop();
}
}.start();
}
});
同樣的對於ANR問題,應用也可以做相關處理。對ANR,我們可以這樣處理。通過一個看門狗來實時的檢測主線程,一旦主線程發生阻塞,則通知Application 做相關處理。
主要方法是在線程中每隔一段時間(Activity一般是5S,廣播一般是10S),向主線程發送一個messager,使計數器加1,如果到點沒有加1,則表明主線程阻塞。
@Override
public void run() {
setName(|ANR-WatchDog|);
int lastTick;
while (!isInterrupted()) {
lastTick = mTick;
mUIHandler.post(tickerRunnable);
try {
Thread.sleep(mTimeoutInterval);
}
catch (InterruptedException e) {
mInterruptionListener.onInterrupted(e);
return ;
}
// If the main thread has not handled _ticker, it is blocked. ANR.
if (mTick == lastTick) {
ANRError error;
if (mNamePrefix != null)
error = ANRError.New(mNamePrefix, mLogThreadsWithoutStackTrace);
else
error = ANRError.NewMainOnly();
mAnrListener.onAppNotResponding(error);
return ;
}
}
}
private final Runnable tickerRunnable = new Runnable() {
@Override public void run() {
mTick = (mTick + 1) % 10;
}
};
Android中ListView綁定CheckBox實現全選增加和刪除功能(DEMO)
ListView控件還是挺復雜的,也是項目中應該算是比較常用的了,所以寫了一個小Demo來講講,主要是自定義adapter的用法,加了很多的判斷等等等等….我們先來看看實
打造一個Android 3D立體旋轉容器
1.概述回到正題,這次帶來的效果,是一個Android 的3D立體旋轉的效果。當然靈感的來源,來自早些時間微博上看到的效果圖。非常酷有木有!作為程序猿我當然要把它加入我的
Android解析XML的三種方式SAX、Pull、Dom
在android開發中,經常用到去解析xml文件,常見的解析xml的方式有一下三種:SAX、Pull、Dom解析方式。最近做了一個android版的CSDN閱讀器,用到了
手機測試環境調試 -- 微信,Android,IOS開發使用Fiddler代理
CleverCode最近在做微信開發。在調試內網用手機調試微信公眾號開發的時候,發現訪問觸屏版配置host頁面非常麻煩。最好找到一個代理工具Fiddler。1 代理原理1
【我的Android進階之旅】解決strings.xml格式化占位符錯誤: Multiple substitutions specified in non-positional format
今天有一個Android新手使用strings.xml進行格式化的時候