第一步,创建一个类继承FileObserver类,在onEvent()方法中处理对应逻辑:
/**
* ANR监控
* 检测/data/anr路径下是否有新的文件产生
*/
public class AnrFileObserver extends FileObserver {
private static final String TAG = "AnrFileObserver";
public AnrFileObserver(String path) {
super(path);
}
@Override
public void onEvent(int event, @Nullable String path) {
Log.e(TAG, "event=" + event + ",path=" + path + "=========" + FileObserver.CREATE);
if (path != null && event == FileObserver.CREATE) {
Log.e(TAG, "ANR路径下新增了日志文件:" + path);
RebootManager.getInstance().restartAppDelay(3000);
RxBus.get().post(new RxAnrEvent());
}
}
}
第二步,在主界面启动监听,结束时关闭监听:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//开启监听
mAnrFileObserver = new AnrFileObserver("/data/anr");
mAnrFileObserver.startWatching();
}
@Override
protected void onDestroy() {
super.onDestroy();
//关闭监听
if (mAnrFileObserver != null) {
mAnrFileObserver.stopWatching();
}
}