Android基础整理(一)

Android四大组件

Android学习思维导图

一、Activity

Activity是一个Android应用程序组件(也称为Android四大组件之一),它提供了一个屏幕,用户可以通过该屏幕进行交互以执行某些操作,例如拨打电话,拍照,发送电子邮件或查看地图。每个活动都有一个窗口,用于绘制其用户界面。

1.Activity的生命周期

onCreate()->onStart()->onResume()->[Activity is running]->onPause()->onStop()->onDestry()

onPause()->onRestart()->onStart()->onResume()->[Activity is running]

如图:

Activity生命周期

2.Activity的启动模式

(1)  standard

      标准启动模式;

      如果一个Activity的启动模式被设置成standard,那么它可以无限制的创建。你每一次通过Intent去启动这种模式的Activity都会重新创建一个activity。

(2) singleTask

      在栈中唯一一个

      如果系统中已经存在了该种启动模式的目标Activity,则系统并不会重新创建一个目标Activity,而是首先将持有目标Activity的整个任务栈都会被置于前台(用户可见) 。

(3) singleTop

      在栈中最上面的一个

      如果在启动这种模式的Activity的时候,当前任务栈的顶端已经存在了相同的Activity,那系统就不会再创建新的,而是回调任务栈中已经存在的该Activity的onNewIntent( )方法。

(4) singleInstance

      栈中唯一一个

      这种启动模式和singleTask几乎一样,它也只允许系统中存在一个目标Activity,包括上面我们所说的SingleTask的一些特性singleInstance都有。唯一不同的是,持有目标Activity的任务栈中只能有目标Activity一个Actvitiy,不能再有别的Activity,对! 就是承包了这个任务栈。

3.Activity横竖屏切换

(1)不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行1次,切竖屏时会执行1次。

(2)设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。

(3)设置Activity的android:configChanges="orientation|keyboardHidden|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。

(4)设置Activity的android:configChanges="orientation|keyboardHidden|screenSize"时,切屏切记要加上screenSize,否则4.0版本以上生命周期不生效。

4.Fragment生命周期

Fragment生命周期

5.Activity与Fragment生命周期对应


Activity与Fragment生命周期对应

  (1)onAttach( ):当Fragment与Activity绑定、关联的时候调用;

(2)onCreateView( ):创建该Fragment对应的视图,并把视图返回给调用者,与onCreate( )的区别是你可以在onCreate( )中初始化与View无关的东西;

(3)onActivityCreated( ):在Activity完成其onCreate()方法后调用;

(4)onDestroyView( ):当Fragment销毁视图的时候调用;

(5)onDetach( ):当Fragment与Activity脱离关系的时候调用;


二、Service 

Service是Android的四大组件之一,它是用来进行后台操作的,它并不为用户提供界面,所有的操作都在后台完成,它的所有操作对用户都是不可见的。一旦其他的组件启动了一个Service,它会在后台一直运行,即便是用户切换到了其他的应用中。其他的组件也可以绑定Service进而启动一个Service,甚至可以用它来进行IPC(进程通信,inter process communication). Service可以进行的操作有很多,比如说网络通信,音乐播放,文件的I/O操作,以及和Content Provider进行交互。

1.Service的生命周期

service的生命周期

2.Service的2种启动方式

(1)startService()

通过startService启动后,service会一直无限期运行下去,只有外部调用了stopService()或stopSelf()方法时,该Service才会停止运行并销毁。

(2)bindService()

1.bindService启动的服务和调用者之间是典型的client-server模式。调用者是client,service则是server端。service只有一个,但绑定到service上面的client可以有一个或很多个。这里所提到的client指的是组件,比如某个Activity。

2.client可以通过IBinder接口获取Service实例,从而实现在client端直接调用Service中的方法以实现灵活交互,这里再通过startService方法启动中是无法实现的。

3.bindService启动服务的生命周期与其绑定的client息息相关。当client销毁时,client会自动与Service解除绑定。当然,client也可以明确调用Context的unbindService()方法与Service解除绑定。当没有任何client与Service绑定时,Service会自行销毁

3.Service与IntentService的区别

IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或stopSelf()。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。

三、ContentProvider

ContentProvider一般为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。

参考:ContentProvider从入门到精通 (借用大神的)

四、BroadcastReceiver

参考:Android四大组件:BroadcastReceiver史上最全面解析(借用大神的)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容