详解Android中处理崩溃异常

2019-12-10 19:39:00王旭

在收集异常信息时,朋友们也可以使用Properties,因为Properties有一个很便捷的方法properties.store(OutputStream out, String comments),用来将Properties实例中的键值对外输到输出流中,但是在使用的过程中发现生成的文件中异常信息打印在同一行,看起来极为费劲,所以换成Map来存放这些信息,然后生成文件时稍加了些操作。
完成这个CrashHandler后,我们需要在一个Application环境中让其运行,为此,我们继承android.app.Application,添加自己的代码,CrashApplication.java代码如下:

package com.scott.crash; 
 
import android.app.Application; 
 
public class CrashApplication extends Application { 
  @Override 
  public void onCreate() { 
    super.onCreate(); 
    CrashHandler crashHandler = CrashHandler.getInstance(); 
    crashHandler.init(getApplicationContext()); 
  } 
} 

最后,为了让我们的CrashApplication取代android.app.Application的地位,在我们的代码中生效,我们需要修改AndroidManifest.xml:

<application android:name=".CrashApplication" ...> 
</application> 

因为我们上面的CrashHandler中,遇到异常后要保存设备参数和具体异常信息到SDCARD,所以我们需要在AndroidManifest.xml中加入读写SDCARD权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

搞定了上边的步骤之后,我们来运行一下这个项目:

详解Android中处理崩溃异常

看以看到,并不会有强制关闭的对话框出现了,取而代之的是我们比较有好的提示信息。
然后看一下SDCARD生成的文件:

详解Android中处理崩溃异常