android 四大组件总结

[TOC]

四大组件的重要性不用提了,今天学了这么久我就系统的总结一下,activity,service,content,

activity

专门负责控制视图View与用户进行交互的活动类.standard (默认模式)、singleTop、singleTask和singleInstance,可以在不同的场景下在AndroidManifext.xml中的标签的“android:launchMode”属性来指定启动模式。
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()方法发送当一个粘滞广播被发送之后,会自动保存下来,一旦有接收器注册这条广播,就会立即收到这条广播


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注