91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中service的組件是什么

發布時間:2021-06-29 16:05:45 來源:億速云 閱讀:148 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關Android中service的組件是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

    活動綁定服務并在活動里調用服務的方法。

        如果直接在活動里new了一個服務的對象,是不能調用服務的方法的,因為這個時候服務還沒有啟動,這個時候需要在activity里調用bindService方法,使activity與服務綁定,綁定服務后,會自動調用服務里的OnBind()方法,返回一個Binder對象給activity使用,通過該對象來調用service里的方法。

   OnBind()
  當組件調用bindService()想要綁定到service時(比如想要執行進程間通訊)系統調用此方法.在你的實現中,你必須提供一個返回一個IBinder來以使客戶端能夠使用它與service通訊,你必須總是實現這個方法,但是如果你不允許綁定,那么你應返回null. 

    之前一直不理解bindService()方法的原理,下面來寫一下自己的理解:

    1、在service里,新建一個內部類MyBinder extends Binder,在這個類里實現與service的通信方法。同時service里有個onBind() 方法,該方法只有在activity調用bindService()時才會執行,返回一個binder對象,即在service里創建的那個內部類MyBinder的對象。

    2、在activity中調用bindService對象時,新建的那個匿名內部類,new ServiceConnect(){

} 這里的onServiceConnect(ComponentName name, IBinder service)這里參數里的service即我們在service的onBinder()方法里返回的那個對象。

        借著這個service對象,就可以操做Service服務里的方法了。

MainActiivty.java

package com.yuanlp.servicedemo;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {


    private ServiceConnection conn=new ServiceConnection() {

        private MyService services=null;

        @Override
        //服務與活動綁定時觸發
        public void onServiceConnected(ComponentName name, IBinder service) {

            MyService.MyBundler bundler= (MyService.MyBundler) service;  //返回的是service里的那個bundler的實例
            services = bundler.getService();
            services.execute();

        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            //服務與活動鏈接斷開時調用
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void startService(View view){
        Intent service = new Intent(this, MyService.class);
        //startService(service);

        bindService(service,conn, Context.BIND_AUTO_CREATE);
    }

    public void stopServicess(View view){
//        Intent stopServices = new Intent(this, MyService.class);
//        stopService(stopServices);
        unbindService(conn);
    }

    public void onDestroy(){

        unbindService(conn);  //當活動銷毀時,取消綁定
        super.onDestroy();
    }
}

Myservice.java

package com.yuanlp.servicedemo;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service {
    private static final String TAG = "MyService";

    public class MyBundler extends Binder {
        MyService getService(){
            return MyService.this;  //返回當前的service對象
        }
    }

   private MyBundler bundler=new MyBundler();

    public MyService() {
        Log.d(TAG, "MyService: 構造方法");
    }

    @Override
    public IBinder onBind(Intent intent) {
       return bundler;
    }

    public void onCreate(){  //再服務創建時啟用
        super.onCreate();
    }

    /**
     * 在服務啟動的時候調用
     * @param intent
     * @param flags
     * @param startId
     * @return
     */
    public int onStartCommand(Intent intent,int flags,int startId){
        Log.d(TAG, "onStartCommand: ");
        return super.onStartCommand(intent,flags,startId);
    }

    /**
     * 在服務銷毀時調用
     */
    public void onDestroy(){
        Log.d(TAG, "onDestroy: ");
        super.onDestroy();
    }


    
    public void execute(){
        Log.d(TAG, "execute: 被執行了");
    }
}

關于Android中service的組件是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙陵县| 黔西县| 云和县| 金川县| 庄浪县| 防城港市| 辰溪县| 安福县| 靖宇县| 威宁| 星座| 怀远县| 望谟县| 甘德县| 天门市| 子长县| 依安县| 林甸县| 莱西市| 屏山县| 遵义市| 和田市| 视频| 花莲县| 镇宁| 桐梓县| 茶陵县| 新邵县| 静海县| 昂仁县| 开江县| 辽中县| 广宗县| 佛冈县| 嘉善县| 丰宁| 当涂县| 吉隆县| 绥芬河市| 高陵县| 河东区|