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!
相关推荐
2022-05-11
unityAndroid如何判断点击到的是UI界面
if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { Debug.Log("点击到UGUI的UI界面,会返回true"); } else { Debug.Log("如果没点击到UGUI上的任何东西,就会返回false"); } }
2021-06-07
Android如何判断网络状态
在Android版本6.0之前只能使用NetworkInfo获取网络状态 6.0之后NetworkInfo被弃用,应当使用Network来获取 public class NetWorkStateUtils { private final static int NO_NETWORK = 0; private final static int NETWORK_WIFI = 1; private final static int NETWORK_MOBILE = 2; public static int networkConnected(Context context) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //Android版本在6.0之前只能使用NetworkInfo获取网络状态 if (Bu...
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-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-06-25
获取当前Activity及Fragment类名
在BaseActivity和BaseFragment中添加代码 @Overrideprotected void onResume(){ super.onResume(); String Tag = getClass.getSimpleName();} 此Tag即为当前Activity或Fragment的类名。
2021-03-25
Activity的四种启动模式
Activity的启动模式可以在AndroidManifest.xml中,通过android:launchMode或者在Intent的Flag来设置实现。 standard模式 特点:Activity的默认启动模式 每启动一个Activity就会在栈顶创建一个新的实例 缺点:当Activity已经位于栈顶时,再次启动Activity时还需要创建一个新的实例,不能直接复用。 singleTop(栈顶复用)模式 特点:该模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,调用其onNewIntent()方法,否则创建新的实例。 缺点:如果Activity并未处于栈顶位置,则还是可能会创建多个实例。 singleTask(栈内复用)模式 特点:Activity只会在任务栈里存在一个实例。如果要激活的Activity在任务栈里已经存在,就不会创建新的Activity,而是直接复用这个已经存在的Activity,调用其onNewIntent()方法,并且清空这个Activity任务栈上的所有Activity。 singleInstance(单一实例)模...
