2017-07-13
StackTraceElement e= Thread.currentThread().getStackTrace()[4];
String caller = e.getFileName() +":"+ e.getLineNumber() +" ";
Log.d(TAG,"invalidate: "+ caller);
获得当前调用的trace
2019-7-25
- Service默认在主线程执行,想执行后台逻辑可使用IntentService
- Anr的超时时间,
- 触屏操作:5s,
- 前台广播10s未响应,后台广播60s未响应
- service没响应 20s
自建APM的原因:
- 更能满足个性化需求,比如一般商业apm只会提示应用启动时间,但如果我们需要考量的是启动多个步骤的分别的事件,则没法满足。
- 不能与内部系统打通,比如我想知道出问题这个问题的用户的具体信息,只能在商业apm上看一下用户的id,然后又到内部系统查用户的具体信息。
- 数据安全的考虑,避免把数据暴露到第三方中。
应用启动的方式有3种:
- 冷启动,完整的新启动一个应用,具体的流程需要从点击事件开始经过
- ipc
- Process.start
- ActivityThread
- bindApplication
- licyCycle
- ViewRootImpl
需要先创建application,然后创建activity,并经过application和activity的相关生命周期
2.热启动
仅仅是应用从后台到前台,执行activity的 onStop 到 onRestar onstar onResum等流程就行
3.暖启动
topActivity已被回收,要从onCreate开始,重新走activity