Android组件 | 青训营笔记

122 阅读4分钟

Android组件介绍 | 青训营笔记

这是我参与[第四界青训营] 笔记创作活动的第一天。 本文主要记录了android应用开发中的基本组件和通信组件,以及个人思考,内容仅供参考,如有错误欢迎指正QAQ。

1.Android基础组件

1.1界面组件 Activity

生命周期:

Activity生命周期.jpg

1.1.1 Activity 界面容器

     1. 作用:前台交互,程序入口,布局容器。
     2. 基本步骤:1.配置程序清单AndroidManifest.xml,声明主程序入口。
                 2.声明布局文件mianActvity.xml3.逻辑代码进行页面绑定。
     3. 生命周期:onCreate():创建时回调,一般在此处创建视图和绑定数据。
                 onStart():已启动,即将进入前台。
                 onResume():与用户开始交互,位于Activity栈顶。
                 onPause():Activity失去焦点或已暂停,Activity界面部分可见,下一个 生命周期是onResume()或onStop()。
                 onStop():Activity不再可见,下一个回调是onRestart()或onDestory()
                 onRestart():重启已停止的Activity,下一个回调是onStart()
                 onDestory():销毁Activity,释放该Activity的所有资源。
                 onSaveInstanceState():在非正常关闭时回调,用于保存数据,不支持持久化数据。
                 onRestoreInstanceState()/onCreate():用于恢复数据
      4.配置发生变化:销毁->重建
              配置改变不重建:修改AndroidManifest配置中configChange属性(onConfingurationChanged())
              local:语言改变
              fontScale:字体大小改变
              orientation:旋转屏幕
              keybordHidden:键盘显示隐藏
        注:一般在onPause()和onStop()或onSaveInstanceState()阶段保存数据   
        
        
        

1.1.2 Activity 启动模式 android:lanuchMode

        standard-默认模式,允许重复,在页面栈上新增,会出现重复
        singleTop-不允许连续重复,栈顶复用
        singleTask-页面栈中不允许页面重复,栈内复用
        singleInstance-整个系统页面不允许重复

个人总结

Activity是Android开发中重要的一部分,负责app界面的设计,Activity的切换对应应用界面的切换跳转。

1.2 Fragment

解决页面碎片化问题

1.2.1 基本用法

       1.创建Fragment布局文件
       2.创建Fragment子类,加载布局文件
       3.Activity加载Fragment
               静态加载:布局中绑定
               动态加载:FragmentManager加载

1.2.2 生命周期

       onAttach()-Fragment和Activity建立关联
       onCreateView()-创建视图
       onActivityCreater()-onCreate()方法返回
       onDestoryView()-视图被移除时调用
       onDetach()-Fragment和Activity取消关联
       1.启动:onAttach()-onCreate()-onCreateView()-onActivityCreater()-onStart()-onResume()-Resumed()
       2.部分遮挡:Resumed-onPause()-Paused
       3.部分遮挡恢复:Paused-onResumed()-Resumed
       4.完全遮挡:Resumed-OnPause()-onStop()-onDestroyView()
       5.完全遮挡恢复:onCreateView()-onActivityCreated()-onStart()-onResume()-Resumed

1.2.3 组件获取 数据传递

       Fragment获取Activity中的组件:getActivity().findViewById(R.id.xx)
       Activity获取Fragment中的组件:getFragmanager().findFragmentById(R.id.fragment_xx)
       Activity-->Fragment:setArguments(Bundle bundle)
       Fragment-->Activity:通过对象直接传递
                  通过viewmodel/handler/broadcast等

1.3服务组件 Service

1.3.1 基本用法

   1.注册:<service...>标签
   2.创建:建立Service实现类
   3.加载:startService()/bindService()

1.3.2 生命周期

   onStart(),onBind(),onCreate(),onDestory()

1.3.3 与Activity通信

   1.定义Binder子类,并实现getService()方法,返回Service对象
   2.实现Service类onBind()方法,返回上述Binder对象
   3.实例化ServiceConnection对象,实现onServiceConnected()方法,从中获取到Service实例
   4.Activity实调用bindService()方法,并传递步骤3的ServiceConnection对象,将流程跑起来
   5.Activity既可以通过调用Service实例中的方法进行直接通信

1.4广播对象 Broadcast

1.4.1 基本用法

   静态广播
    1注册:AndroidManifest中使用<receiver...l><intent-filter...>
    2创建:建立相应的BroadcastReceiver实现类
    3接收:在步骤2onReceive()中接收广播
    4发送:Context.sendBroadcast()
    动态广播
    Context.registerReceiver()

1.5 数据通信 ContentProvider

1.5.1 基本用法

生产者
1 注册:AndroidManifest中使用<provider...>
  属性: authorities / exported / readPermission / writePermission
2 创建:建立相应的ContentProvider实现类
方法: onCreate/ getType / insert / delete / update / query
消费者
1声明:AndroidManifest中声明权限
2使用:context.getContentResolver(方法: insert / delete / update / query

1.6 意图 Intent

基本用法
1显式lntent
setComponent/ setClass指定具体类
2隐式Intent
Action(动作)Data(数据)Category(类别)Type(数据类型)Component(组件)Extra(扩展信息)Flag(标志位)

2.Android通信组件

2.1 Handler

   处理主线程通信  
   1创建:新建Handler,实现handleMessage(Message)
   2构造Message : what / setData()
   3发送:子线程调用Handler.sendMessage(Message)发送Message
   4处理:在Handler的handleMessage(Message msg)主线程更新UI

2.2 Binder

进程通信
服务端
1.定义一个AIDL文件
⒉实现描述的接口,编写service
3.如果有实体类,需要提供实体类(jar包形式)
客户端
1.拿到AIDL文件
2.绑定服务,获得接口持有对象