以下为一些常见的Android的总结:


1. Activity与Fragment的生命周期

Activity的生命周期如下图所示: Android常见问题总结(一)_第1张图片

Fragment生命周期如下图所示: Android常见问题总结(一)_第2张图片

2. Acitivty的四种启动模式与特点

Android中的Activity由任务栈管理,当我们start一个新的Activity时,就往任务栈中新加入一个栈帧,而当我们finish一个Activity界面时,则往任务栈中移除一个栈帧。Activity具有四种启动模式,我们可以在配置文件中通过修改launchMode修改,启动模式分别是:standard、singleTop、singleTask和singleInstance

standard

standard为默认Activity的启动模式。在standard启动模式下,无论何时start一个Activity,系统都会往任务栈中加入一个新的栈帧。

singleTop

在singleTop启动模式下,当我们start一个Activity时,系统会先去检测任务栈栈顶的Activity和要启动t的Activity是否相同。如果相同则不进行任何操作,否则往任务栈中加入一个新的栈帧。

singleTask

在singleTask启动模式下,当我们start一个Activity时,系统会先去检测任务栈中是否含有将要启动的Activity。如果含有,则把该Activity所在栈帧的顶部的栈帧移除,使该Activity所在的栈帧处在栈顶,如果没有,则新加入一个栈帧。

singleInstance

在singleInstance启动模式下,当我们start一个新的Activity时,该Activity会在一个新的任务栈中启动。

4. Service的生命周期,两种启动方法,有什么区别

Android中的Service组件可以通过startService和bindService两种方法来启动,其生命周期示意图如下:
Android常见问题总结(一)_第3张图片

如果一个Service同时被调用了startService和bindService方法,那么它的生命周期就变成如下图所示: Android常见问题总结(一)_第4张图片

5. 怎么保证service不被杀死

要想使Service存活下来,我们就必须保证Service所在的进程不被杀掉,一般来说有以下方法:
  1. 在onStartCommand回调方法中返回START_STICKY,那么该进程被杀掉后系统会试图重启它
  2. 设置配置文件中application的persistent属性,把应用提升为系统级别应用,免疫low memory killer
  3. 在Service的onDestroy方法中重启该Service,不过如果进程被直接杀掉这种方法就无效了
  4. 通过监听特殊的系统广播(如屏幕变化、电量变化、网络变化等)去不断重启Service
  5. 使用AlarmManager定时重复开启Service
  6. 通过设置Service的process属性,把Service放在子进程中,避免与主进程一起被回收
  7. 开启一个另外的进程与Service进程互相监视,双方要是有任意一方被杀掉则重启

更多相关文章

  1. Android跨进程通信——Activity
  2. android音乐播放器Service的生命周期分析
  3. Android定制之常见问题解决
  4. Qt_Qtopia与Android的进程间通讯方式
  5. Android Process生命周期
  6. Android——Activity的生命周期
  7. Android系统启动——SystemServer进程启动
  8. Android 获取当前进程
  9. Android service生命周期详解

随机推荐

  1. Android开发实践:多线程编程小结
  2. Android(安卓)Nine Patch图片及按钮背景
  3. Android中关于Volley的使用(一)加载图片
  4. Android(安卓)图片特效如何实现及总结
  5. 记录一下我的Android学习过程-第一课
  6. Android(安卓)P 开发者预览版 · 操作指
  7. Android(安卓)真的能跨平台吗?(翻译)
  8. android Java开发设计模式及在android中
  9. 腾讯优测优分享 | Android性能测试工具化
  10. 将程序安装到SD卡