Android

四大组件:

活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)

 

活动:是一种可以包含用户界面的组件,主要用于和用户进行交互。

 

活动状态:1、运行状态:一个活动位于返回栈的栈顶时,这时活动就处于运行状态。

                  2、暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。

                  3、停止状态:当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

                  4、销毁状态:当一个活动从返回栈中移除后就变成了销毁状态。

 

活动的生命周期:

             onCreate():活动第一次被创建的时候调用。在此方法中完成活动的初始化操作,如加载布局、绑定事件等。

             onStart():在活动由不可见变成可见的时候调用。

             onResume():在活动准备好和用户进行交互的时候调用。此时活动一定处于返回栈的栈顶,并且处于运行状态。

             onPause():在系统准备去启动或者恢复另一个活动的时候调用。

             onStop():在活动完全不可见的时候调用。如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,                                 而onStop()方法不会执行。

             onDestroy():在活动被销毁之前调用,之后活动的状态将变成销毁状态。

             onRestart():在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

             以上7个方法中,除了onRestart()方法,其他都是两两相对的,从而又可将活动分为3种生存期:

             完整生存期:活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。

             可见生存期:活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。

             前台生存期:活动在onResume()方法和onPause()方法之间所经历的,就是前台生存期。

 

活动的启动模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中通过给<activity>标签指定                                android:launchMode属性来选择启动模式。

            standard:在standard模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对                                于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的                                  一个新的实例。

            singleTop:在启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。

            singleTask:每次启动该活动时,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实                                   例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

            singleInstance:会启动一个新的返回栈来管理这个活动。

 

安卓六大基本布局:线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、

                                帧布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout

 

Fragment:是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕空间。

Fragment状态:1、运行状态:当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。

                          2、暂停状态:当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它相关联的可                                                    见碎片就会进入到暂停状态。

                          3、停止状态:当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态,或者通过调用                                                                      FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但如果在事务提交之前                                                      调用addToBackStack()方法,这时的碎片也会进入到停止状态。总的来说,进入停止状态的碎片                                                    对用户来说是完全不可见的,有可能会被系统回收。

                         4、销毁状态:当活动被销毁时,与它相关联的碎片就会进入到销毁状态。或者通过调用                                                                                         FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但如果在事务提交之前并                                                   没有调用addToBackStack()方法,这时的碎片也会进入到销毁状态。

碎片的回调方法:onAttach():当碎片和活动建立关联的时候调用。

                             onCreateView():为碎片创建视图(加载布局)时调用。

                             onActivityCreated():确保与碎片相关联的活动一定已经创建完毕的时候调用。

                             onDestroyView():当与碎片关联的视图被移除的时候调用。

                             onDetach():当碎片和活动解除关联的时候调用。

 

广播分为两种类型:1、标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收                                                           到这条广播消息,因此它们之间没有任何先后顺序可言。效率高,无法被截断。

                                2、有序广播:是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广                                                           播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。此时的广播接收器是                                                           有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可                                                            以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。

 

安卓实现数据持久化的3种方式:文件存储、SharedPreferences存储、数据库存储。

                          文件存储:最基本的一种数据存储方式,不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保                                                 存到文件当中,适合用于存储一些简单的文本数据或二进制数据。

                          SharedPreferences存储:使用键值对的方式来存储数据。

得到SharedPreferences对象的方法:

                        1、Context类中的getSharedPreferences()方法;

                        2、Activity类中的getPreferences()方法;

                        3、PreferenceManager类中的getDefaultSharedPreferences()方法。

 

内容提供器(Content Provider):主要用于在不同的应用程序之间实现数据共享的功能。允许一个程序访问另一个程序中的数                                                            据,同时还能保证被访数据的安全性。使用内容提供器是Android实现跨程序共享数据的标准                                                          方式。

                                                        不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以                                                             选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄漏的风险。

内容提供器的两种用法:1、使用现有的内容提供器来读取和操作相应程序中的数据;

                                        2、创建自己的内容提供器给我们程序的数据提供外部访问接口。

 

服务(Service):是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的                                任务。

 

Android的UI是线程不安全的。如果想要更新应用程序里的UI元素,则必须在主线程中进行,否则就会出现异常。

 

安卓中的异步消息处理主要由4个部分组成:Message、Handler、MessageQueue、Looper

                  Message:是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同的线程之间交换数据。

                  Handler:主要是用于发送和处理消息。发送消息一般是使用Handler的sendMessage()方法,而发出的消息经过                                      一系列地辗转处理后,最终会传递到Handler的handleMessage()方法中。

                  MessageQueue:消息队列。主要用于存放所有通过Handler发送的消息。这部分消息会一直存在于消息队列中,等                                                   待被处理。每个线程中只会有一个MessageQueue对象。

                  Looper:是每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入到一个无限循环当中,                                     然后每当发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的handleMessage()方                                   法中。每个线程中也只会有一个Looper对象。

 

异步消息处理流程:首先需要在主线程中创建一个Handler对象,并重写handleMessage()方法。然后当子线程中需要进行UI                                    操作时,就会创建一个Message对象,并通过Handler将这条消息发送出去。之后这条消息会被添加到                                          MessageQueue的队列中等待被处理,而Looper则会一直尝试从MessageQueue中取出待处理消息,最后分                                  发回Handler的handleMessage()方法中。

 

Service中唯一的一个抽象方法:onBind(),必须要在子类中实现。

Service最常用到的3个方法:onCreate()、onStartCommand()、onDestroy()。

                                 onCreate():在服务创建时调用。

                                 onStartCommand():在每次启动服务时调用。

                                 onDestroy():在服务销毁的时候调用。

 

启动和停止服务,主要借助Intent来实现。

 

Service的生命周期:

                   startService() -> onCreate() -> onStartCommand() -> stopService()/stopSelf(),每调用一次startService()方法,                                                  onStartCommand()就会执行一次,但实际上每个服务都只会存在一个实例,所以不管调用多少次                                                   startService()方法,只需调用一次stopService()或stopSelf()方法,服务就会停下来了。

                    bindService() -> onCreate() -> onBind()

                    当调用了startService()方法后,又去调用stopService()方法,这时服务中的onDestroy()方法就会执行,表示服务已                       经销毁。类似的,当调用了bindService()方法后,又去调用unbindService()方法,onDestroy()方法也会执行。当一                       个服务既调用了startService()方法,又调用了bindService()方法,这种情况下要同时调用stopService()和                                        unbindService()方法,onDestroy()方法才会执行。

 

Intent:是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之               间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。

 

Intent大致可分为两种:显式Intent、隐式Intent

使用Intent来传递对象通常有两种实现方式:Serializable和Parcelable

 

Bundle:主要用于传递数据。它保存的数据,是以key-value(键值对)的形式存在的。

             Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。

当Bundle传递的是对象或对象数组时,必须实现Serializable或Parcelable接口。

Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据。

 

Adapter:是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。

常用的几个adapter:BaseAdapter,ArrayAdapter,SimpleAdapter,SimpleCursorAdapter

                                BaseAdapter:是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

                                ArrayAdapter:支持泛型操作,最为简单,只能展示一行字;

                                SimpleAdapter:有最好的扩充性,可以自定义出各种效果。

                                SimpleCursorAdapter:可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值