又是一年毕业季,在之前的投递的java后端开发岗位不了了之,但是有幸接收到一个android的面试,所以现在就把以前android的东西捡一捡。

首先我们来看看android的四大组件,
Activity:
活动视图,一个负责与用户交互的显示界面的组件
Broadcast Receiver:
广播接收器,监听的事件源是android中的其他组件
Service:
服务,一个没有界面,运行在后台的服务。
Content Provider:
内容提供者,一个应用程序可以使用content provider来共享自己的数据,另一个应用想要使用该应用提供的数据时,可以通过ContentResolver来访问。

androd是通过任务来管理活动的,一个任务就是一组放在返回栈里活动的集合,刚创建的活动会先入栈,处于栈顶的位置,如果调用finish方法活动被销毁就会出栈,系统显示的都是处于栈顶的活动。


活动的四个状态:

  • 运行状态:
    当一个活动处于返回栈的栈顶时,活动处于运行态,最不会被系统回收的就是运行态的程序。
  • 暂停状态:
    当一个活动不在处于栈顶时,但仍然可见,弹出一个对话框或者一个不能占满屏幕的活动会导致前一个活动处于暂停态,系统不会轻易回收这样的活动,除非内存极低的情况下。
  • 停止状态:
    当一个活动不处于栈顶,但是用户不可见时,就处于停止状态,当内存较低时会回收
  • 销毁状态
    当一个活动从栈中移除后就进行销毁状态,系统会直接进行回收。

活动的七大生命周期

(1) onCreate():当Activity第一次被调用,完成活动的初始化工作
(2) onStart():当用户看到这个Activity时调用
(3) onResume():当用户获得了焦点时,即点击了屏幕
(4) onPause():当系统准备启动恢复另一个活动时调用。这个方法将消耗cpu的资源释放,保存一些重要数据
(5) onStop():当活动完成不可见时调用。
(6) onDestroy():活动被销毁时调用
(7) onRestart():当活动由停止状态变为运行状态时调用。

四种启动模式
standard:默认的模式,对于standard模式的活动,不管返回栈中是否存在当前活动,系统都会创建当前活动的实例。

singleTop模式:当活动处于栈顶时,再启动这个活动时会直接使用这个活动的实例,不会重新创建这个活动的实例。解决重复创建栈顶活动的问题。


singleTask:该模式在启动活动时判断是否在栈顶,如果活动在栈顶直接使用,不在的时候才会创建新的实例。
singleInstance:指定为singleInstance的活动,系统会直接启动一个新的任务栈来管理这个活动,以便和其他程序共享此活动,如浏览器


显示启动和隐式启动
显示启动:
Intent intent = new Intent(this,MainActivity.class);
startactivity(intent);

隐式启动:
Intent intent = new Intent(“com.baidu.mytest”);
startactivity(intent);





显示启动和隐式启动的区别:

显示启动直接指定要跳转的activity类名,不用过滤效率高,适合用于同一个应用的activity跳转
隐式启动不能根据类名跳转,根据manifest中的activity配置的intent-filter中的action进行跳转,需要过滤,耗时多,适用于应用间活动的跳转。

隐式启动的activity中intent-filter的过滤过程:

加载安装的所有intent-filter到一个列表中
剔除掉action不匹配的intent-filter
剔除掉uri不匹配的intent-filter
剔除掉category不匹配的intent-filter
如果最后剩下的intent-filter为0,报异常
如果最后的intent-filter有多个,则会让用户自己选择到底启动哪个intent-filter代表的活动

更多相关文章

  1. 进入android项目组的第一天
  2. Android震动---启动、循环、取消控制
  3. Android(安卓)9 (P)系统启动之SystemServer大揭秘下
  4. Linux kernel起来后Android启动过程
  5. 【Android】应用程序启动过程源码分析
  6. 【Android】Android(安卓)4.0 无法接收开机广播的问题
  7. Simple Guide for Porting Android(安卓)Kernel
  8. Android应用程序启动Binder线程源码分析
  9. 【Android开机启动Activity或者Service方法】

随机推荐

  1. Android音频开发(3):使用AudioRecord实现录
  2. android动画源码合集、动态主题框架、社
  3. 更新sdk后,点击sdk管理器报出location of
  4. Android(安卓)动画标签——translate
  5. Android音频开发(7):音乐可视化-FFT频谱图
  6. android和js的相互调用
  7. Android跨进程通信IPC之9——Binder之Fra
  8. Android中的适配器(Adapter)
  9. Android音频开发(2):使用AudioRecord录制pcm
  10. android:gravity / android:layout_Gravi