异常数据
设置面包屑
研发人员可以在应用程序的任意位置调用「面包屑」接口进行埋点。当应用程序发生崩溃时,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());
      }
});