Android初级第三次小结

    Service

       服务

       四大组件之一     没有界面,运行在后台

    要素:

      1、继承Service

      2、在清单文件里面注册

               <name = 包名 + 类名>

    生命周期:

      

    打开服务:

       startService(Intent intent)

    生命周期:

       onCreat()  onStartConmmand()

    关闭服务:

       stopService(Intent intent);

    注意:1、通过startService打开的服务跟Activity之间的联系比较松散(activity关闭服务不会死掉)

              2、Service打开之后继续调用startService只会调用 onStartConmmand()

              3、通过startService打开的Service只能通过stopservice关闭

    ServiceConnection conn = new ServiceConnection() {

     

      @Override

      public void onServiceDisconnected(ComponentName name) {

        //绑定异常调用

      }

     

      @Override

      public void onServiceConnected(ComponentName name, IBinder service) {

        //绑定成功,并返回一个非空的Ibinder类型对象时调用

      }

     };

    绑定服务

         绑定服务的时候,界面关闭掉,服务随之关闭。绑定成功的时候可以得到服务返回的数据。

       Intent service = new Intent(this, MyService.class);

      //绑定服务

      bindService(service , conn, Context.BIND_AUTO_CREATE);

      //Context.BIND_AUTO_CREATE  当服务不存在,默认去创建服务

    解除绑定:

      unbindService(conn);

    绑定Service获取服务返回的消息

      1、绑定成功  

             onBinder()会返回IBinder类型的对象

      2、声明一个类去接触Binder(implement IBinder)

      3、在声明的类中声明一个方法

      4、在 onBinder返回声明的类的对象

     5、在Activity中的ServiceConnection 类型的对象中的onServiceConnected()中接收返回的对象

    

    

    starService  + binderService

    广播接受者

       BroadcastReceiver

    广播机制

        单向,群发。

    创建:

       1、继承BroadcastReceiver

       2、在清单文件中注册

    

    

    注册:

     1、清单文件中注册

      2、代码中注册      

    

    

      例子:

            接收短信

            1、权限:

                   <uses-permission android:name="android.permission.RECEIVE_SMS"/>

            2、设置广播接收者的过滤条件

                   a、在清单文件中注册

                   <intent-filter >

                    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>

                </intent-filter>

    

                 b、在代码中注册

                 receiver = new MyReceiver();

                     IntentFilter filter = new IntentFilter();

                      filter.addAction("android.provider.Telephony.SMS_RECEIVED");

                      /     /注册广播接受者

                      registerReceiver(receiver , filter );

         

                     //注销广播接收者

                      unregisterReceiver(receiver);

    

      

    清单文件中注册与代码中注册的区别

           1、 清单文件中注册 进程不存在 只要过滤条件匹配就能接收广播

           2、代码中注册  使用灵活  进程不存在则接收不了

    

    

    应用本身也可以发广播 

         可以被应用本身的广播接收者接收,也可以被其他应用的广播接收者接收

    //发送广播

    Intent intent = new Intent();

         intent.putExtra("key", "ssssss");

         intent.setAction("com.xinbo.mysms");

      sendBroadcast(intent );

    Intent

          1、显式意图   (指定要打开的目标)

          2、隐式意图

                  

    通过隐式意图打开界面:

       1、在清单文件为Activty设置过滤条件

            <intent-filter >

                    <action android:name="com.yinan"/>

                   

                    <category android:name="android.intent.category.DEFAULT"/>

                </intent-filter>

     2、Intent intent = new Intent();

         intent.setAction("com.yinan");

      startActivity(intent );

      1、显式意图  只能打开本应用的界面    只能打开一个

      2、隐式意图   可以打开本应用也可以打开其他应用的界面    可以开启多个以供选择

    

你可能感兴趣的:(android,Activity)