日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第8章 Service基础Activity与Service绑定

發布時間:2023/11/29 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第8章 Service基础Activity与Service绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    要知道如果調用函數startService方法,那么即使你的程序退出了,但是Service依然運行在后臺;也就是說此時想要停止service必須調用stopService方法。

    現在我們把Activity與Service綁定在一起,那就是Service要隨著程序的退出而終止,此時調用的方法為bindService方法,方法如下:

    A.?編寫需要運行在后臺的類繼承自android.app.Service。

      public class MyService extends Service {

        //服務生命周期 創建,開始,銷毀
?        /**
?           * 創建
?         */
        ?@Override
?      public void onCreate() {
??      // TODO Auto-generated method stub
?        ?super.onCreate();
??        Log.d("info", "Service Create");
        ?}
?        /*
?           * 開始
?           * (non-Javadoc)
?           * @see android.app.Service#onStart(android.content.Intent, int)
?         */
?      @Override
?        public void onStart(Intent intent, int startId) {
?        ?// TODO Auto-generated method stub
?          ?super.onStart(intent, startId);
??          Log.d("info", "Service Start");
?          }
?          /**
?               * 銷毀?
?           */
?       @Override
?         public void onDestroy() {
??        // TODO Auto-generated method stub
??          super.onDestroy();
?          ?Log.d("info", "Service Destroy");
?          }

?

?          /**
?             * 當Service與Activity成功綁定時調用這個方法(non-Javadoc)
?           * @see android.app.Service#onBind(android.content.Intent)
?           */
?        @Override
?          public IBinder onBind(Intent arg0) {
??          Log.d("info","Service Bind Success");
??          return null;
?           }
?          /**
            ? * 重新綁定
?           */
?        @Override
?          public void onRebind(Intent intent) {?
?            ?super.onRebind(intent);
??          Log.d("info","Service ReBind Success");
?          }
?          /**
?             * 取消綁定
?           */
?        @Override
?          public boolean onUnbind(Intent intent) {
??           Log.d("info","Service Unbind Success");
??          return super.onUnbind(intent);
??          }
?      }

?

    B.??在AndroidManifest.xml中配置<service>標簽

      <service android:name=".MyService" android:enabled="true" ></service>

?

    

    C.?綁定服務:

      (1) 通過使用Activity的bindService(Intent service,ServiceConnection conn,int flags)完成

????       由該方法的第二個參數可以確定第二步要做什么

      (2) 編寫類實現ServiceConnection 接口

?         class MyServiceConnection implements ServiceConnection
???         {

??          @Override
??          public void onServiceConnected(ComponentName arg0, IBinder arg1) {
???          Log.d("info", "Service Connection Success");
??          ?//成功連接服務,該方法被執行。在該方法中可以通過IBinder對象取得onBind方法的返回值,一般通過向下轉型

??          }

?          ?@Override
??          public void onServiceDisconnected(ComponentName arg0) {
???          // TODO Auto-generated method stub
?          ??Log.d("info", "Service Connection Filed");
??          ?//連接失敗執行
?          ?}
??? ?
???       }

        (3)使用

????         class BtnClick implements OnClickListener
???           {
?????        ?@Override
??          public void onClick(View arg0) {
???          Intent intent = new Intent(Main.this,MyService.class);???
???          MyServiceConnection myServiceConnection = new MyServiceConnection();
???          switch (arg0.getId()) {
??            ?case R.id.btnStart:????????
????              Main.this.startService(intent);
????              break;
???            case R.id.btnStop:????
???              ?Main.this.stopService(intent);
????              break;
???            case R.id.btnBind:
????              ?Main.this.bindService(intent,myServiceConnection?,Context.BIND_AUTO_CREATE);
???               ?break;??
???            case R.id.btnUnBind:
????                //ServiceConnection必須是全局變量否則此處報錯
????               Main.this.unbindService(myServiceConnection?);
????                break;
??            ?default:
? ?                break;
??            ?}???
?        ?  }
??? ?
???         }

?

***開啟service有兩種方法,一種startService,另一種是bindService。如果兩種方法同時使用的話,不論是先啟用startService先還是啟用bindService先,都需要先等待解除綁定服務再能調用stopService方法,程序才會自動回調destroy。不論是先啟用startService先還是啟用bindService先,然后再退出程序,以startService啟動的服務忍然需要當程序再次啟動后調用stopService停止服務。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的第8章 Service基础Activity与Service绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。