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-03-26
Android线程池
Android中常见的线程池有四种,分别是FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor。 FixedThreadPool线程池是通过Executors的new FixedThreadPool方法来创建,特点是该线程池中的线程数量是固定的,即使线程处于闲置的状态,它们也不会被回收,除非线程池被关闭,当所有的线程都处于活跃状态时,新任务就处于队列中等待线程来处理。 FixedThreadPool只有核心线程,没有非核心线程 CachedThreadPool线程池是通过Executors的new CachedThreadPool来创建的它是一种线程数量不固定的线程池,它没有核心线程,只有非核心线程,当线程池中的线程都处于活跃状态,就会创建新的线程来处理新的任务,否则就会利用闲置的线程来处理新的任务。线程池中的线程都有超时机制,时长为60s,超过这个时间,闲置的线程就会被回收。这种线程池适合处理大量并且耗时较少的任务。 ScheduledThreadPool线程池是通过Executo...
2021-09-14
activity在后台被杀死后恢复,fragment空指针导致崩溃的问题
activity在后台被杀死后恢复,fragment空指针导致崩溃的问题 出现原因 在activity被回收后恢复时,activity被重新实例化了,但是附属在该activity中的fragment并没有被销毁,在activity的onSaveInstanceState里会将fragment的状态保存起来,当activity重新创建时,其中的fragment还是之前的,而父activity已经被回收了,此时调用getActivity会返回null导致崩溃。 解决方法 只需要在fragmentactivity被系统回收的时候不保存fragment的状态即可,即重写fragmentactivity的onSaveInstanceState并注释掉super.onSaveInstanceState方法,代码如下: @SuppressLint("MissingSuperCall")@Overrideprotected void onSaveInstanceState(@NotNull Bundle outState) { // super...
2021-06-01
Android如何在文本中添加空格
名称 编号 描述     不会被合并的空格,长度与常规空格相同 &ensp   全角空格,长度为半个中文字符 &emsp   全角空格,长度为一个中文字符 \u3000 \u3000 全角空格,长度为一个中文字符
2021-04-05
leancloud获取ErrorCode方法
在开发中不应该直接把ErrorMessage提示给用户,可以通过获取ErrorCode经过处理后提示给用户。 AVException avException = new AVException(e); int code = avException.getCode(); JSONObject errorcode = new JSONObject(); try { errorcode.put("code",code); errorcode.put("message",e.getMessage()); switch (errorcode.getInt("code")){ //在这里写处理errorcode的方法 } } catch (JSONException jsonException) { ...
2021-07-17
实例化ViewModel的简单方法
实例化ViewModel 新建一个ViewModel为MainViewModel,旧的实例化ViewModel方法为 val mainViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactort()).get(MainViewModel::class.java) 新方法需要导入一个fragment-ktx扩展,在dependencies下添加implementation("androidx.fragment:fragment-ktx:$version")即可 在实例化ViewModel时的代码为 val myViewModel by viewModels<MainViewModel>() 创建能在后台被杀死时仍保存数据的ViewModel 在viewModel中添加savedStateHandle参数即可 class MainViewModel(private val savedStateHandler: SavedState...
2021-07-15
Android实现两次返回退出应用
共有两种方法实现此功能 方法一:重写onBackPressed()方法 重写onBackPressed()方法,执行exit()方法,在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在 Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了Back键,则再次执行exit方法,此时isExit的值已为 true,则会执行退出的方法。 public class MainActivity extends AppCompatActivity {private static boolean isExit = false; // 标识是否退出private static Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExi...
