Android 开发学习笔记(一)—— 四大组件

2018-03-26  本文已影响0人  isletn

学习 Android 开发,首先脑海中要有一个大概的知识体系结构图,而 Android 的四大组件就是其中很重要的一部分。


Android 四大组件

接下来看看他们具体都是什么
1. Activity

<1> Activity 相当于 iOS 中的 ViewController;
<2> Activity 的作用是展示用户交互,是一个屏幕界面、窗口;
<3> Activity 之间通过 Intent 跳转、通信;
<4> 每一个 Activity 都必须在 AndroidManifest.xml 配置文件中声明,否则系统将不识别也不执行该 Activity。
<5> 启动 Activity 过程:调用startActivity,该方法通过层层调用,最终会调用 ActivityStackSupervisor.java 中的 startSpecificActivityLocked。

2. Service

<1> service 就是服务,一种计算型组件;
<2> 它的作用是支持需要在后台执行的耗时操作,如下载、复杂的计算等,或者监控其他组件的运行状态;
<3> 特点:生命周期很长、没有用户交互界面、在后台运行等。
<4> 启动:调用 startService ,层层调用后,最终会调用 ActivityService.java 中的 bringUpServiceLocked。
<5> 与 Activity 只有一种运行模式(启动状态)不同,service 组件有两种状态:启动状态(started)绑定状态(bound)

3. Content provider

<1> Content provider 是一种数据共享组件;
<2> 可以通过 ContentResolver 向他组件乃至其他应用共享数据,无法被用户感知;
<3> ContentProvider 使用URI(content:// ...)来唯一标识数据集。

4. Broadcast receiver

<1> 一种消息型组件,类似 iOS 中的通知?
<2> 用于在不同组件乃至不同应用之间传递消息,无法被用户感知;
<3> 静态注册动态注册

<4> 特点,动态注册广播的对象销毁后, 广播也就失效。


四大组件的相关总结
|——Browser
|——CallLog                       
|——Contacts
|              |——Groups
|              |——People
|              |——Phones
|              |——Photos
|——Images
|              |——Thumbnails
|——MediaStore
|              |——Albums
|              |——Artiss
|              |——Audio
|              |——Genres
|              |——Playlists
|——Settings
|——Video
1. 活动状态(Activity/Running):当Activity 处于当前栈顶,此时它焦点能响应用户的操作。同一时刻有且只有一个Activity处于活动状态。
2. 暂停状态(Paused):当Activity失去焦点但仍对用户可见(如在它之上有另外一个透明的Activity或Toast、Alert时)时处于暂停状态,它仍然存活,但当系统内存极小时可能会被杀掉。
3. 停止状态(Stoped):完全被另一个Activity遮挡时处于停止状态,容易被杀掉
4. 非活动状态(Dead):Activity尚未被启动、已经被手动终止或已经被系统回收时处于Dead状态,调用finish()手动终止Activity
/**
 *  1. 当 Activity 第一次被实例化的时候系统会调用;
 *     整个生命周期只调用一次;
 *     通常的初始化设置:为Activity设置所有使用的布局文件;为按钮绑定监听器等静态的设置操作
 */
protected void onCreate(Bundle savedInstanceState) {
    // code ...
}
/**
 *  2. 当Activity可见但未获得用户焦点不能交互时系统会调用
 */
protected void onStart() {
    //code ...
}
/**
 *  3. 当Activity已经停止然后重新被启动时系统会调用
 */
protected void onRestart() {
    //code ...
}
/**
 *  4. 当Activity 可见且获得用户焦点能交互时系统会调用
 */
protected void onResume() {
    //code ...
}
/**
 *  5. 当系统启动另一个新的 Activity 时,在新的 Activity 启动之前被系统调用保存现有的Activity中的持久数据、停止动画等
 */
protected void onPause() {
    //code ...
}
/**
 *  6. 当Activity 被新的 Activity 完全覆盖不可见时被调用
 */
protected void onStop() {
    //code ...
}
/**
 *  7. 当Activity (用户调用finish() 或系统由于内存不足)被系统销毁时调用;
 *     生命周期内只调一次;
 *     用来释放onCreate()中创建的资源,如结束线程等
 */
protected void onDestroy() {
    //code ...
}
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  if (null != savedInstanceState) {
    String _userID = savedInstanceState.getString("UserID");
    String _UID = savedInstanceState.getString("UID");
    String _password = savedInstanceState.getString("Password");
    updateUserID(_userID);
    updateUID(_UID);
    updatePassword(_password);
  }
  setContentView(R.layout.activity.main);
}
protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  
  outState.putString("UserID", getUserID());
  outState.putString("UID", getUID());
  outState.putString("Password", getPassword());
}

上一篇 下一篇

猜你喜欢

热点阅读