Android Crash问题
发表于|更新于
|总字数:140|阅读时长:1分钟|浏览量:
Android在API21(Android5.0)以下,crash后会直接退出整个应用,但是在API21(Android5.0)以上系统时,会遵循以下原则重启:
- 包含service:如果程序crash的时候运行着service,那么系统会重新启动service。
- 不包含service,但是当前栈中包含两个Activity,A->B,如果B crash,那么系统会重启A。
- 不包含service,但是当前栈中包含三个Activity,A->B->C,如果C crash,那么系统会重启B,并且A仍然存在,即可以从重启的B back到A。
文章作者: 丨小小丶
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!
相关推荐
2021-05-19
Android布局优化——merge的使用
Android布局优化:< merge >的使用merge标签主要用于减少布局层数,加快视图绘制,提高UI性能 主要使用场景 当根布局为FrameLayout时 当子控件完全不需要依赖父容器时 当使用include引入另一个布局且该布局和当前布局的视图一致时,可以在子布局中使用merge 举例我们有layout1.xml和layout2.xml两个布局文件,其中layout1.xml: <FrameLayout> <include layout="@layout/layout2"/></FrameLayout> layout2.xml: <FrameLayout> <TextView /> <TextView /></FrameLayout> 最后在layout1.xml中的效果就为 <FrameLayout> <FrameLayout> <TextView /> <TextView...
2021-03-24
Android的事件分发机制
当一个或多个手指触摸屏幕时,通常有四种类型的事件: ACTION_DOWN:按下屏幕时发生,表示触摸事件开始,他是第一个发生的事件 ACTION_UP:手指抬起,表示触摸事件结束 ACTION_MOVE:手指按下屏幕,并且手指移动的距离超过了某个阈值 ACTION_CANCLE:事件已取消(不是由于用户的行为引起) 这些信息都被包含在MotionEvent中,ACTION_DOWN和ACTION_UP只有一个,而ACTION_MOVE可能存在多个,所谓的事件分发就是队MotionEvent事件分发的过程,就是找到一个能处理MotionEvent的View,过程由Activity开始,传到ViewGroup,最终再传到View,响应过程从上到下,从子到父。 当我们点击一个按钮时,这个按钮可能被包含在ViewGroup中,事件会先从Activity中开始分发进行,如果Activity要自己处理,那么这个按钮就得不到事件信息,如果Activity是进行分发,那么接下来包裹这个按钮的ViewGroup就会得到处理,同样如果这个ViewGroup要进行拦截,那么这个按钮也得不到响应...
2021-09-30
android获取屏幕当前显示的activity完整路径
android获取屏幕当前显示的activity完整路径 cmd中输入adb shell "dumpsys window | grep mCurrentFocus"

2021-03-26
Android线程池
Android中常见的线程池有四种,分别是FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor。 FixedThreadPool线程池是通过Executors的new FixedThreadPool方法来创建,特点是该线程池中的线程数量是固定的,即使线程处于闲置的状态,它们也不会被回收,除非线程池被关闭,当所有的线程都处于活跃状态时,新任务就处于队列中等待线程来处理。 FixedThreadPool只有核心线程,没有非核心线程 CachedThreadPool线程池是通过Executors的new CachedThreadPool来创建的它是一种线程数量不固定的线程池,它没有核心线程,只有非核心线程,当线程池中的线程都处于活跃状态,就会创建新的线程来处理新的任务,否则就会利用闲置的线程来处理新的任务。线程池中的线程都有超时机制,时长为60s,超过这个时间,闲置的线程就会被回收。这种线程池适合处理大量并且耗时较少的任务。 ScheduledThreadPool线程池是通过Executo...
2021-07-17
switch自定义滑块和滑道
修改滑道(track) 在drawable文件夹下新建一个根为selector的xml,在其中设置android:state_checked=”true”和android:state_checked=”false”时的滑道状态。 如果需要做到滑块大小比滑道大,可以在滑道的形状中添加 <stroke android:width="@dimen/dp_2" android:color="@color/transparent" /> 即添加一圈颜色为透明的边框线,就可以实现看起来滑块超出滑道边界的效果 如需修改滑道的长度,需要设置 app:switchMinWidth="xxdp" 修改滑块(thumb) 同滑道一样建立selector为根的xml,可自定义颜色与大小,但最大大小不能超过滑道的大小。 在xml中使用 在SwitchMaterial中,设置滑块代码为 android:thumb="@drawable/switch_thumb_sele...
2021-06-25
getFragmentManager()被弃用的代替方法
getFragmentManager()被弃用的代替方法 当需要管理activity或者fragment中的fragment时使用getChildFragmentManager()。 当需要本身需要与fragment关联的activity交互时使用getParentFragmentManager()。 以下为getParentFragment()方法的注释: Return the FragmentManager for interacting with fragments associated with this fragment’s activity. Note that this will be available slightly before getActivity(), during the time from when the fragment is placed in a FragmentTransaction until it is committed and attached to its activity.If this Fragment is a chil...
