Android初級第三次小結

來源:互聯網
上載者:User

標籤:android   activity   

    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初級第三次小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.