异常数据相关接口
设置面包屑
研发人员可以在应用程序的任意位置调用「面包屑」接口进行埋点。当应用程序发生崩溃时,SDK 会按代码的触发顺序收集埋点信息并在崩溃轨迹中高亮显示,以协助研发人员在应用崩溃时了解代码调用逻辑。
- 相关接口
/**
* @param breadcrumb:自定义信息,最多包含100个字符,支持中文、英文、数字、下划线
*/
NBSAppAgent.leaveBreadcrumb(String breadcrumb);
- 代码示例
public MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NBSAppAgent.setLicenseKey("AppKey")
.start(this.getApplicationContext());
NBSAppAgent.leaveBreadcrumb("login MyActivity onCreate");
}
public void onResume() {
super.onResume();
NBSAppAgent.leaveBreadcrumb("login MyActivity onResume");
}
public void logginPressed(View view) {
NBSAppAgent.leaveBreadcrumb("login MyActivity logginPressed");
new LoginAsyncTask.execute();
}
public void onStop() {
super.onStop();
NBSAppAgent.leaveBreadcrumb("login MyActivity onStop");
}
}
自定义信息
在应用发生崩溃的时候,研发人员往往需要更多的信息以收集现场环境,可以通过调用「自定义信息」接口上传额外信息,协助分析崩溃问题,采集的自定义信息会在异常详情页「自定义信息」中展示。
- 相关接口
/**
* 最多可添加10条附加信息,随崩溃上传
* param key key 值
* param value value值,每条附加信息最大支持 100 个字节
*/
NBSAppAgent.setUserCrashMessage(String key,String value);
- 代码示例
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
NBSAppAgent.setLicenseKey("AppKey")
.start(this.getApplicationContext());
NBSAppAgent.setUserCrashMessage("张三", "13700001234");//初始化后的任意位置插入自定义附加信息
}
自定义Log
开发者可通过 Android 日志系统的 LogCat,来收集和查看系统调试输出的信息,通过打印输出的 Log 信息来调查 Bug 发生时的应用程序信息,并通过基调听云 App SDK 上传自定义 Log 日志。
- 相关接口
/**
* @param enable 设置为 true,崩溃时上传 LogCat 日志
*/
NBSAppAgent.enableLogging(boolean enable)
- 代码示例
NBSAppAgent.setLicenseKey("AppKey").enableLogging(true).start(this.getApplicationContext());
自定义错误
使用「自定义错误」接口可以采集研发人员「try / catch 异常」和「业务错误」并在基调听云平台「异常分析」→「错误」中进行展示,可以帮助研发人员收集异常和错误。
- 相关接口
/**
* @param message 不可以传空,最大长度 1024 字节,超出截取前 1024 字节
* @param exception 上传 exception 取到抛出时的堆栈,不传只取到调用接口的堆栈,多线程下只取调用接口的线程的堆栈,堆栈最大深度为100
* @param metaData value值支持 Number, String, Array, Map 类型,最大 128k,超出设置metadata为:"metaData":{"error":"metaData的大小大于最大限制128K"}
*/
NBSAppAgent.reportError(String message, Exception e, Map<String, Object> metaData)
NBSAppAgent.reportError(String message, Map<String, Object> metaData);
- 代码示例
try {
//...业务代码
} catch (Exception e) {
Map<String, Object> map = new HashMap<>();
map.put("当前页面", "主页");
NBSAppAgent.reportError("发生异常", e, map);
}
try {
//...业务代码
} catch (Exception e) {
Map<String, Object> map = new HashMap<>();
map.put("当前页面", "主页");
NBSAppAgent.reportError("发生异常", map);
}
设置异常回调
使用「异常回调」接口后可以在发生卡顿或上传崩溃数据时获取SDK采集的异常数据「崩溃、卡顿数据」。 注:需要在崩溃上传或发生卡顿前调用「SDK连服务器成功后就会上传崩溃数据」。请勿在回调接口中执行耗时操作。请勿在回调接口中 Kill 掉进程。
- 相关接口
/**
* @param type 触发接口回调的异常类型,1为崩溃,2为卡顿,3为崩溃和卡顿
* @param feedback DataTypeCallBack 回调接口实现类对象
*/
NBSAppAgent.setDataTypeCallBack(int type, TingyunAnomalousDataFeedBack feedback)
- 代码示例
NBSAppAgent.setDataTypeCallBack(3, new com.networkbench.agent.impl.instrumentation.TingyunAnomalousDataFeedBack() {
@Override
public void dataTypeFeedBack(com.networkbench.agent.impl.data.AnomalousData anomalousData) {
Log.e("TingYun","异常线程为" + anomalousData.getThreadName()+ ",堆栈信息为" + anomalousData.getAllStacktrace());
}
});