• android的activity被杀死后如何重启


    最近公司的大屏展示机器人上的程序运行时间长了,比如五天,十天会出现偶尔的崩溃,查日志可能是内存溢出或者是ndk层的错误,这种错误一时也不太好查找,但是产品那边有个要求就是程序退出了一定要能重启,能抓日志最好抓日志,然而ndk层的崩溃是无法重启的。但是我们去查看日志的时候发现了一个规律。

    虽然应用程序所在的程序被kill process了,但是不到两秒的时间内,程序自定义的application又重启了,只是activity没有显示出来,所以顿时有了一个想法是在application里做一个延时检测,如果application启动后两秒的时间内没有任何该程序的activity运行则打开MainActivity。

    但是总感觉这种方法有点low,于是找了网上的一些其他方法,比如低内存的时候如何重启app:https://blog.csdn.net/qq_14876133/article/details/82801579 

    运行程序后,在android studio里点击logcat上的terminate application按钮,杀掉activity后确实能很快的重启,但是没明白原因,比较特殊的是打开的第一个activity被杀后就不能重启了,如果当前的activity栈前面还有一个activity的话,点击terminate application,就会调用前一个activity的oncreate方法,然后可以在这个activtiy去把对应的界面打开。很怀疑这种机制,于是又写了个demo测试,果然是这个现象。

    所以如果不想让自己的程序崩溃后没有界面,可以写一个baseactivtiy和一个splashactivity,baseactivity用来打开主界面,然后让所有的activity都集成baseactivtiy,这样无论哪个activity崩溃了都会打开主界面。

    具体为什么会这样还不太明白原理,待有时间继续研究,此处做一个记录

  • 相关阅读:
    c语言中float、double、long double在内存中存储方式
    linux路由表配置
    linux下ip命令用法
    Ajax与Comet
    JavaScript之JSON
    Mustache学习
    微信小程序环境搭建
    JavaScript之模仿块级作用域
    JavaScript之call()和apply()方法详解
    JavaScript引用类型之Array数组之强大的splice()方法
  • 原文地址:https://www.cnblogs.com/dongweiq/p/9890675.html
Copyright © 2020-2023  润新知