这是我参与「第四届青训营 」笔记创作活动的第8天
本节课的主要内容: Android基础组件
1,Activity
Activity是用于展示数据,实现与用户的交互的容器
生命周期
onCreate():创建时回调,一般在此处创建视图和绑定数据
onStart():已启动,即将进入前台
onResume():与用户开始交互,位于Activity栈顶
onPause():Actvity失去焦点或已暂停,Activity界面部分可见,下一个生命周期是onResume()或onStop()
onStop():Activity不再可见,下一个回调是onRestart()或onDestory()
onRestart():重启已停止的Activity,下一个回调是onStart()
onDestory():销毁Actvity,释放该Activity的所有资源
onSaveInstanceState():在非正常关闭时回调,用于保存数据,不支持持久化数据
onRestoreInstanceState()/onCreate():用于恢复数据
常见场景下Activity生命周期流转:
1 启动:onCreate() - onStart() - OnResume() - Resumed 2 退出:Resumed - onPause() - onStop() - onDestroy() 3 部分覆盖:Resumed - onPause() - Paused 4 部分遮挡恢复:Paused - onResume() - Resumed 5 完全覆盖:Resumed - onPause() - onSaveInstanceState() - onStop() - Stoped 6 完全遮挡恢复:Stoped - onStart() - onResume() - Resumed 7 后台回收:Stoped - Killed 8 回收恢复:Killed - onCreate() - onStart() - onRestoreInstanceState()- onResume() - Resumed 9 配置改变:Resumed - onSaveInstanceState() - onPause() - onStop() - onDestroy() - onCteate() - onStart() - onRestoreInstanceState() - onResume()
启动Activity的方法
显性启动
Intent intent = new Intent(ActivityMethods.this, OtherActivity.class)
startActivity(intent);
隐形启动
Intent intent = new Intent("string_action");
// intent.setAction("string_action");
startActivity(intent);
2,Fragment
使用方法
- 构造一个 Fragment 的子类。
- 在这个子类中复写 onCreateView() 方法,在此方法中 通过 inflater 类调用layout文件生成一个 Fragment。
- 将 Fragment 作为 Activity 布局的一部分添加到 Activity 中,其位于 Activity 视图层次结构的某个 ViewGroup 中,并且 Fragment 会定义其自己的视图布局,可以在 Activity 声明一个 FramLayout 作为 Fragment 容器,利用 java 代码将其插入容器。 4,也可以通过在 Activity 的布局文件中声明 Fragment,将其作为 元素插入的 Activity 布局,或者通过将其添加到某个现有的 ViewGroup。
3,Service
启动方式
Service的启动方式有两种:startService启动和bindService启动。
startService
- 启动Service
显式启动通过类名称来启动,需要在Intent中指明Service所在的类,并调用startService (lntent)启动service,显式启动代码如下:
final Intent intentStart = new Intent(ServiceActivity.this, StartService.class);
startService(intentStart);
- 停止service
显式启动停止Service,需要将启动Service的Intent传递给stopService (Intent)函数,代码如下:
stopService(intentStart);
bindService
- 使用bindService()方法启动Service
绑定模式使用bindService()方法启动Service,其格式如下:
bindService(Intent service,ServiceConnection conn,int flags);
4,Broadcast
广播的使用包括以下几个步骤:
- 自定义广播接收者:重写onReceiver()
- 注册广播接收者到消息中心(AMS):动态(代码中registerReceiver)或者静态注册(AndroidManifest.xml中申明)
- 定义及发送广播到消息中心(AMS):Context.sendBroadcast()、Context.sendOrderedBroadcast;
- AMS选择并发送广播给合适的广播接受者(根据Intent-filter,Permission)
- 广播接受者通过消息循环获取广播,并调用onReceive()进行处理
5,ContentProvider
- ContentResolver是数据调用者,ContentProvider将数据发布出来,通过ContentResolver对象结合Uri进行调用。
- 一般来说ContentProvider是单例模式,多个应用可通过ContentResolver调用ContentProvider的增删改查操作数据,ContentResolver调用的数据操作会让同一个ContentProvider处理。
6,总结
以上对Android的五个基础组建进行了基础的讲解,总的说来非常有用,对于我这类初学者而言能很快对其有一定的了解,但是具体如何使用我还需要不断学习。
参考资料:
【Android 客户端专场 学习资料一】第四届字节跳动青训营 - 掘金 (juejin.cn)
Android-Service详解 - 掘金 (juejin.cn)
Android基础到进阶四大组件之Broadcast Receiver详解 - 掘金 (juejin.cn)
Android基础到进阶四大组件之ContentProvider详解 - 掘金 (juejin.cn)