Android四大组件

activity:
     activity创建
          继承Android的activity类——重写方法——设置显示布局——在Androidmanifest文件中注册activity。
public class MainActivity extends Activity{
        @Override
        protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
       }
}
 
 
AndroidManifest.xml
 
<activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />     //设置为应用程序的主入口
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
 
activity的生命周期
     activity从创建到销毁
         1:onCreate();     //创建
     2:onStart();     //运行
     3:onResume();     //获取焦点
     4:onPause();     //失去焦点
     5:onStop();     //暂停
     6:onDestroy();     //销毁
 
     activity从创建到返回主界面,然后再运行
         1:onCreate();     //创建
     2:onStart();     //运行
     3:onResume();     //获取焦点
     4:onPause();     //失去焦点
     5:onStop();     //暂停
     6:onRestart();  
     7:onStart();     //运行
     8:onResume();     //获取焦点
 
 
activity 的四种状态:活动状态,暂停状态,停止状态,非活动状态。
     活动状态(active/running):activity处于界面最顶端,获取焦点。
     停止状态(paused):activity失去焦点,但对用户可见。
     停止状态(stopped):activity被完全遮挡或者部分遮挡,但保留成员的所有状态额成员信息。
     非活动状态(killed):activity被停止。
 
 
 
 
service:
          优先级高于activity
     类型:本地服务(local service) 
                    一般用于应用程序内部
                         startService stopService stopSelf stopSelfResult
                         bindService     unbindService
               远程服务(remote service)
                      Android系统内部应用程序之间
                           定义IBinder接口
     Start方式特点:
          服务跟启动源没有任何联系。
          无法得到服务对象。
      Bind方式特点:
          通过Ibinder接口实例,返回一个ServiceConnection对象给启动源
          通过ServiceConnection对象的相关方法得到Service方法。
 
注册服务:
<service android:name="com.example.service.StartService" ></service>
<service android:name="com.example.service.BindService" ></service>
  
 
StartService:
              Intent intent=new Intent(MainActivity. this,StartService.class);
              startService(intent);       //startservice
              stopService(intent);  //stopservice
 
StartService.class
        /**
        * 只会调用一次
        */
        @Override
        public void onCreate() {
               super.onCreate();
       }
       
        /**
        * 每次启动都会调用
        */
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
               return super .onStartCommand(intent, flags, startId);
       }
       
        /**
        * 停止服务
        */
        @Override
        public void onDestroy() {
               super.onDestroy();
       }
 
 
BindService:
     Intent intent=new Intent(MainActivity. this,BindService.class);
               //Service.BIND_AUTO_CREATE  服务自动创建
              bindService(intent, null,Service.BIND_AUTO_CREATE );
              unbindService( null);
       }
 
 
broadcastReceiver:
     是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播。
          使用方法:
               发送:
                         把信息装入一个intent对象
                         通过调用相应的方法将Intent对象以广播方式发送出去。
                            
               接收:
                          当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFiter是否与发送的Intent想匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。                   
 
 
注意:BroadcastReceiver需要注册
          静态注册
     <receiver android:name="com.example.contentprovider.bc1">
           <intent-filter android:priority= "100" >  //优先级
               <action android:name="bcone" />
           </intent-filter> 
        </receiver>
 
          动态注册
               //动态注册(程序运行才有用)
              IntentFilter intentFilter= new IntentFilter();
              bc1 bc1= new bc1();
              registerReceiver(bc1, intentFilter);
 
 
        /**
        * 动态注册之后 要销毁
        */
        @Override
        protected void onDestroy() {
               // TODO Auto-generated method stub
               super.onDestroy();
              unregisterReceiver( receivername);
       }
     BroadcastReceiver的声明周期只有十秒左右,在BroadcastReceiver里不能做一些比较耗时的操作。
     
广播种类:
     普通广播(Normal broadcasts)
          所有监听该广播的广播接受者都可以监听到该广播
               同级别接收没有先后顺序(随机)
               级别低的后收到广播
               接收器不能截断广播的继续传播也不能处理广播
               同级别动态注册高于静态注册
 
发送:
                      sendBroadcast();
             Intent intent=new Intent();
             intent.putExtra( "bc", "abc" );
             intent.setAction( "com.example.contentprovider.MainActivity" );
             sendBroadcast(intent);
                       sendOrderBroadcast();
                       sendStickyBroadcast();
接收:
     public class bc1 extends BroadcastReceiver{
       @Override
        public void onReceive(Context arg0, Intent arg1) {
              arg1. getStringExtra("bc");        
              abortBroadcast();     //截断广播(普通广播不能截断)
       }
     }
     
 
 
 
     有序广播(Ordered broadcasts)
          按照接受者的优先级顺序接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大,优先级越高。可以终止广播意图的继续传播。接受者可以更改内容。
               同级别接收没有先后顺序(随机)
               能截断广播的继续传播,高级别的广播接收器收到该广播后,可以决定把该广播是否截断。
               接收器能截断广播的继续传播,也能处理广播。
               同级别动态注册高于静态注册
 
发送:
              Bundle bundle=new Bundle();
              bundle.putString( "text", "bc" );
              setResultExtras(bundle);
接收:
               Bundle bundle=getResultExtras(true);
 
     异步广播(粘滞性滞留广播)
          不能将处理结果传给下一个接受者,无法终止广播。
               //异步广播  先发送后注册
              Intent intent= new Intent();
              intent.putExtra( "key", "value" );
              intent.setAction( "actionname");
              sendStickyBroadcast(intent);
              IntentFilter intentFilter= new IntentFilter("actionname" );
              bc1 bc1= new bc1();
              registerReceiver(bc1, intentFilter);
 
 
contentProvider:
posted @ 2015-09-28 15:55  如梦真心  阅读(305)  评论(0编辑  收藏  举报