轉載:http://sdutdazzling.iteye.com/blog/1773566
爲了對已發佈程序進行跟蹤,通常會對程序的行爲做一些記錄並上傳到server,一般會記錄用戶行爲已方便更好的發進設計流程和記錄程序crash日誌,以便在後續版本中改正程序的錯誤,看了些文章也做了幾個Demo,把自己的理解簡單寫一下。
1. 給線程設置一個自己的異常處理函數(Thread.setDefaultUncaughtExceptionHandler(MyHandler))。
這個方法原來的Java語言裏面就有,我原來以爲這個方法是改變當前線程的 exception handler,寫了一個程序測試了下,發現在一個新建的Thread裏面拋出一個異常也能被捕獲,表示它改變了整個虛擬機線程的exception handler。現在主流的處理方法是給APP創建一個 MyApplication extends Application,重寫基類的onCreate方法,並在此方法內對線程設置自己的handler,並在androidmanifest.xml文件中指定當前的app name爲自己寫的application類。示例代碼如下:
- public class DfApplication extends Application
- {
- Thread.UncaughtExceptionHandler mDefaultHandler;
- public void onCreate()
- {
- super.onCreate();
- System.out.println("my app create");
- mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
- Thread.setDefaultUncaughtExceptionHandler(new MyHandler(this.getApplicationContext()));
- }
- }
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.exceptionstudy"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="15" />
- <application
- android:icon="@drawable/ic_launcher"
- android:name="com.df.app.DfApplication"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name=".MainActivity"
- android:label="@string/title_activity_main" >
。。。。。。
當然這種方法不是必須的,因爲上面也說到了,無論在哪裏設置,都是對整個虛擬機的線程設置,也有不少人是在自己的Activity中進行此操作。不過建議還是放在application類中處理,從抽象上更好理解----這個設置是針對整個應用的。
2.利用ACRA(application crash report for android),是google的一個開源項目,引入它的包,可以將crash log發送到自己的google文檔,官方文檔有詳細說明。http://code.google.com/p/acra/
參考:http://www.eoeandroid.com/blog-23755-2661.html
順帶介紹下anr問題日誌:
anr日誌存在手機目錄:data/anr/traces.txt
可以用adb命令將文件copy到本地電腦目錄下:adb pull data/anr/traces.txt local目錄
adb shell命令操作手機數據庫
adb shell
1,進入到控制檯中,輸入adb shell,進入到命令模式的環境中
2,輸入:cd /data/data/
3, 選擇你所在的數據庫文件,比如我的com.android.homework, 輸入命令:cd com.android.homework
4, 可以使用ls -l 命令查看當前目錄中的文件
5,輸入: cd databases 進入到數據庫文件中
6, ls -l 顯示你數據庫中你建立的數據庫
7, sqlite3 info.db 進入到你選擇的數據庫中
8, .tables :查看你建的表
9, select * from table_name;s 可以查看整個表的信息
10, 使用其他的SQL語句可以進一步對錶進行操作,注意SQL語句必須用分號(;)結尾