0
点赞
收藏
分享

微信扫一扫

HarmonyOS开发 - hilog日志系统

夏天的枫_ 2024-04-26 阅读 18
  • 实现
// add getAppRuntimeExceptionInfo
List getAppRuntimeExceptionInfo();
List<String[]> listErrors = new ArrayList();

public List getAppRuntimeExceptionInfo() throws RemoteException{
    return listErrors;
}

void handleApplicationCrashInner(String eventType, ProcessRecord r, String processName, ApplicationErrorReport.CrashInfo crashInfo){
    ...

    // add getAppRuntimeExceptionInfo start
    try {
        synchronized (this) {
            if (listErrors.size() == 0) {
                String[] firstError = new String[2];
                firstError[0] = packageName;
                firstError[1] = String.valueOf(1);
                listErrors.add(firstError);
            } else {
                List<String> allErrors = new ArrayList<>();
                for (int i = 0; i < listErrors.size(); i++) {
                    String[] arrayErrors = listErrors.get(i);
                    List<String> listStrings = Arrays.asList(arrayErrors);
                    allErrors.addAll(listStrings);
            }
            for (int i = 0; i < listErrors.size(); i++) {
                String[] arrayErrors = listErrors.get(i);
                boolean isContains = allErrors.contains(packageName);
                if (isContains) {
                    if (packageName.equals(arrayErrors[0])) {
                        int errorCount = Integer.parseInt(arrayErrors[1]);
                        arrayErrors[1] = String.valueOf(errorCount + 1);
                    }
                } else {
                    String[] newErrors = new String[2];
                    newErrors[0] = packageName;
                    newErrors[1] = String.valueOf(1);
                    listErrors.add(newErrors);
                    break;
                }
            }
        }
    } catch (Throwable t) {
        Log.e(TAG, "appExceptionInfo  listErrors ");
    }
    // add getAppRuntimeExceptionInfo end

    mAppErrors.crashApplication(r, crashInfo);

}
  • 调用
    /**
     *所有应用运行异常情况
     *
     * @param
     * @return List<String []>
     *                     String[0]:终端应用包名
     *                     String[1]:终端应用发生异常次数
     */
    public List<String[]> getAppRuntimeExceptionInfo() {
        LogUtils.v(TAG, "getAppRuntimeExceptionInfo() ");
        final long ident = Binder.clearCallingIdentity();
        List<String[]> listResult = new ArrayList();
        try {
            listResult= ActivityManager.getService().getAppRuntimeExceptionInfo();
            LogUtils.v(TAG, "getAppRuntimeExceptionInfo result: " + listResult.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        Binder.restoreCallingIdentity(ident);
        return listResult;
    }
举报

相关推荐

0 条评论