什么是android四大组建
来源:互联网 发布:seo转行 编辑:程序博客网 时间:2024/05/17 06:58
>> Activity
Activity是一个应用程序的可视组件,提供一个屏幕,用户可以用来交互为了完成某项任务 ,一个程序可以有多个activity,一个activity可以启动另一个activity ,当然这些activity保存在系统在一个栈上 。
讲到这里就要讲到Activity启动方式有四种,分别是:
standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
singleTop 栈顶模式 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
singleTask 单例模式只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
singleInstance 只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
Activity的生命周期
onCreate() 创建
onStart() 启动
onResume() 可见
onPause() 可见不可操作(暂停)
onStop() 不可见(后台)
onDestory() 销毁
onRestart() 从后台回来时会被调用
以上是常用的
onWindowFocusChanged() 程序启动时想要获取视特定视图组件的尺寸大小可以在此调用,原因:onCreate()中Window对象还没创建完成 推荐文章http://blog.csdn.net/liuhe688/article/details/6657776
onSaveInstanceState() 在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用 /// 在用户改变屏幕方向时 /// 当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用
我们还要讲讲两个Activity之间如何传递参数,我们使用Intent的Bundle协带参数,就是我们常用的Intent.putExtra方法。这些只能传递int,string,long等常量,如果我们想要传递对象,需要用Bundle作为载体,但是要传递的对象要继承Parcelable或Serializable
如何传递自定义的对象呢?(考察对方会不会用Parcelable,先看一下这Parcelable和Serializable的)
>>Service
Service是一个专门在后台处理长时间任务的Android组件,它没有UI。Service的onCreate是在主线程(ActivityThread)中调用的,耗时操作会阻塞UI,会导致程序崩溃,一般会运行在子线程中,但是有个例外,IntentServie,这个Service只启动一次,而且执行的onHandlerIntent方法是在一个独立的线程中执行,执行完毕后,这个Service就会被销毁
Service 它有两种启动方式,startService和bindService。
startService只是启动Service,启动它的组件(如Activity)和Service并没有关联,只有当Service调用stopSelf或者其他组件调用stopService服务才会终止。 bindService方法启动Service,其他组件可以通过回调获取Service的代理对象和Service交互,而这两方也进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时才会销毁Service。
>> Broadcast Receiver
Android广播机制分为两个方面:广播发送者和广播接收者
自定义广播接收器:
需要继承基类BroadcastReceivre,并实现抽象方法onReceive(context, intent)方法
广播接收器接收到相应广播后,会自动回到onReceive(..)方法
注意,广播也是运行在UI线程中的,所以不能做耗时操作
onReceive方法中都会涉及到与其他组件之间的交互,如发送Notification、启动service等。比较常用
BroadcastReceiver总体上可以分为两种注册类型:静态注册和动态注册。
1).静态注册:
直接在AndroidManifest.xml文件中进行注册
2).动态注册时,无须在AndroidManifest中注册<receiver/>组件。直接在代码中通过调用Context的registerReceiver函数,可以在程序中动态注册BroadcastReceiver.
使用场景:
1.同一app内部的同一组件内的消息通信(单个或多个线程之间);
2.同一app内部的不同组件之间的消息通信(单个进程);
3.同一app具有多个进程的不同组件之间的消息通信;
4.不同app之间的组件之间消息通信;
5.Android系统在特定情况下与App之间的消息通信。
>> Content Provider
ContentProvider(内容提供者)
主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。
一个应用实现ContentProvider来提供内容给别的应用来操作,
一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以。
file, sqlite3, Preferences, 三种数据操作方式都只是针对本应用内数据
ContectResolver与ContentProvider 来操作别的应用程序的数据。
最后
4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见,从而也就不可用。而broadcast receiver广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。需要注意的是在AndroidManifest文件中进行配置的广播接收者会随系统的启动而一直处于活跃状态,只要接收到感兴趣的广播就会触发(即使程序未运行)。
0 0
- 什么是android四大组建
- android 四大组建
- Android四大组建
- Android四大组建之Service
- android四大组建之Service
- 黑马程序员-Android基础四大组建Service
- Android四大组建五大布局
- Android四大组建之Content Provider 基础篇
- 黑马程序员-Android基础四大组建之Activity
- 黑马程序员-Android四大组建之BroadcastReceive广播接收者
- 黑马程序员-Android基础四大组建内容提供者Content Provider
- Android的四大组建Activity 简单、易懂的解析
- Android的四大组建Service 简单、易懂的解析
- Android组建
- Android组建
- 独家理解 Android 四大组建之一Activity四种加载模式
- 四大组建进程间通信--基础
- 四大组建之 ContentProvider(一)
- CUDA和C++结合编程中错误异常erro C2059:语法错误:"<"
- Hbase 统计表行数的3种方式总结
- 云服务器ECS还原安全组规则功能介绍_安全组规则的备份与还原
- Android入门基础(二)
- Class<T>和Class<?>区别
- 什么是android四大组建
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- 遍历类中参数的类型,获取需要的值
- 变量的解构赋值
- RDDs, DataFrames, and Datasets
- 分布式架构学习之:007--Dubbo 监控中心的介绍与简易监控中心的安装
- 【翻译】What really happens when you navigate to a URL
- 开源表单设计器
- [李景山php] php设计模式关键点