[TOC]
四大组件的重要性不用提了,今天学了这么久我就系统的总结一下,activity,service,content,
activity
专门负责控制视图View与用户进行交互的活动类.standard (默认模式)、singleTop、singleTask和singleInstance,可以在不同的场景下在AndroidManifext.xml中的
activity 要注册,是as自动帮你完成了的在AndroidMainfest.xml
<activity
android:name=".OneActivity"
android:label="@string/title_activity_one" >
</activity>
<intent-filter>(意图过虑器)指定。意图过虑器的目的是告诉其它组件如何启动这个Activity,
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<category>以及<data>标签,这些标签指明了你的Activity响应何种类型的intent
- android生命周期:
(1)启动Activity
系统会先调用onCreate()方法,然后调用onStart()方法,最后调用onResume(),Activity进入运行状态。
(2)当前Activity被其他Activity覆盖其上或被锁屏
系统会调用onPause()方法,暂停当前Activity的执行。
(3)当前Activity由被覆盖状态回到前台或解锁屏
系统会调用onResume()方法,再次进入运行状态。
(4)当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台
系统会先调用onPause()方法,然后调用onStop()方法,进入停滞状态。
(5)用户后退回到此Activity
系统会先调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法,再次进入运行状态。
(6)当前Activity处于被覆盖状态或者后台不可见状态
即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate()方法、onStart()方法和onResume()方法,进入运行状态。
(7)用户退出当前Activity
系统先调用onPause()方法,然后调用onStop()方法,最后调用onDestory()方法,结束当前Activity。 -
activity启动:
Intent intent = new Intent(this,SignInActivity.class);startActivity(intent);
- 传递参数通过:intent
通过Intent类的PutExtra方法将要传递的数据放入Intent 类似map
-
传递参数通过bundle:维护了一个
HashMap<String,Object> Bundle bundle =new Bundle();
bundle.putString("string_key", "string_value");
intent.putExtra("key", bundle);
Intent intent =getIntent();
Bundle bundle=intent.getBundleExtra("key"); -
Intent意图实际上可以在Android的不同组件间实现传递数据。Intent可分为显示意图和隐式意图两类,其中隐式意图需要指定Intent的Action属性来指定意图的动作才能找到对应的组件。
- 带返回值启动Activity:startActivityForResult()方法而且要重写onActivityResult();对于返回码进行判断执行下一步操作:setResult(1,intent);返回值
- Activity有4种启动模式,分别为standard(激活Activity时,都会创建Activity实例)、singleTop(栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例。)、singleTask(该Activity以上的Activity实例都弹出任务栈(销毁))和singleInstance(共享引用):
service
Service(服务)是Android四大组件中与Activity很相似的组件,它们都代表可执行的程序,都是从Context派生出来的。Service与Activity的区别在于,Service一直在后台运行,它没有用户界面。一旦Service被启动起来之后,它就与Activity一样。在AndroidManifest.xml文件中配置该Service。
<service android:name="MyService“></service>
能够长时间运行在应用程序后台
- service生命周期:
onCreate():Service的生命周期开始方法,主要完成Service初始化方法。
onStartCommand():活动生命周期开始,但没有对应的Stop方法。
onBind():绑定服务开始方法。
onUnbind():解除绑定服务结束方法。
onDestroy():服务结束方法。- setvice使用:
- startService(),启动Service,这时Service会调用自身的onCreate()方法(该Service未创建时),接着调用onStartCommand()方法
- stopService()或stopSelf()调用自身的onDestory();
- 绑定本地服务是其他组件调用
bindService(Intent service, ServiceConnection conn, int flags);
来创建的,调用自身的onCreate()方法(该Service未创建时),接着调用onBind()方法返回给客户端一个IBinder接口对象conn:ServiceConnection对象,实现其onServiceConnected()和onServiceDisconnected(),在连接成功和断开连接时处理.
BroadcastReceiver
广播采用的是订阅——发送机制,属于设计模式中的观察者模式(Observer).
- 注册静态广播,当程序关闭了,广播接收器同样能接受到,在AndroidManifast.xml,此类要继承BroadcastReceiver类,并将
标签注册,
<receiver android:name="MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.android_demo8_1_broadcastreceiver01" />
</intent-filter>
</receiver>
- 动态注册:在 Activity中的onCreate注册.设置一个IntentFilter对象,然后在需要注册的地方调用Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法
以上的广播都是正常广播使用Context.sendBroadcast()方法发送,是完全异步的,
对于有序广播:调用Context.sendOrderedBroadcast()方法发送,在同一时刻只能传送到一个接收器。多个接收器是依次执行的.设置“android:priority”属性
粘滞广播调用Context.sendStickyBroadcast()方法发送当一个粘滞广播被发送之后,会自动保存下来,一旦有接收器注册这条广播,就会立即收到这条广播
发表回复