日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android中service的組件是什么

這篇文章將為大家詳細(xì)講解有關(guān)Android中service的組件是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)是專業(yè)的文峰網(wǎng)站建設(shè)公司,文峰接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行文峰網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

    活動(dòng)綁定服務(wù)并在活動(dòng)里調(diào)用服務(wù)的方法。

        如果直接在活動(dòng)里new了一個(gè)服務(wù)的對(duì)象,是不能調(diào)用服務(wù)的方法的,因?yàn)檫@個(gè)時(shí)候服務(wù)還沒(méi)有啟動(dòng),這個(gè)時(shí)候需要在activity里調(diào)用bindService方法,使activity與服務(wù)綁定,綁定服務(wù)后,會(huì)自動(dòng)調(diào)用服務(wù)里的OnBind()方法,返回一個(gè)Binder對(duì)象給activity使用,通過(guò)該對(duì)象來(lái)調(diào)用service里的方法。

   OnBind()
當(dāng)組件調(diào)用bindService()想要綁定到service時(shí)(比如想要執(zhí)行進(jìn)程間通訊)系統(tǒng)調(diào)用此方法.在你的實(shí)現(xiàn)中,你必須提供一個(gè)返回一個(gè)IBinder來(lái)以使客戶端能夠使用它與service通訊,你必須總是實(shí)現(xiàn)這個(gè)方法,但是如果你不允許綁定,那么你應(yīng)返回null. 

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

    1、在service里,新建一個(gè)內(nèi)部類MyBinder extends Binder,在這個(gè)類里實(shí)現(xiàn)與service的通信方法。同時(shí)service里有個(gè)onBind() 方法,該方法只有在activity調(diào)用bindService()時(shí)才會(huì)執(zhí)行,返回一個(gè)binder對(duì)象,即在service里創(chuàng)建的那個(gè)內(nèi)部類MyBinder的對(duì)象。

    2、在activity中調(diào)用bindService對(duì)象時(shí),新建的那個(gè)匿名內(nèi)部類,new ServiceConnect(){

} 這里的onServiceConnect(ComponentName name, IBinder service)這里參數(shù)里的service即我們?cè)趕ervice的onBinder()方法里返回的那個(gè)對(duì)象。

        借著這個(gè)service對(duì)象,就可以操做Service服務(wù)里的方法了。

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
        //服務(wù)與活動(dòng)綁定時(shí)觸發(fā)
        public void onServiceConnected(ComponentName name, IBinder service) {

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

        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            //服務(wù)與活動(dòng)鏈接斷開(kāi)時(shí)調(diào)用
        }
    };

    @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);  //當(dāng)活動(dòng)銷毀時(shí),取消綁定
        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;  //返回當(dāng)前的service對(duì)象
        }
    }

   private MyBundler bundler=new MyBundler();

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

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

    public void onCreate(){  //再服務(wù)創(chuàng)建時(shí)啟用
        super.onCreate();
    }

    /**
     * 在服務(wù)啟動(dòng)的時(shí)候調(diào)用
     * @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);
    }

    /**
     * 在服務(wù)銷毀時(shí)調(diào)用
     */
    public void onDestroy(){
        Log.d(TAG, "onDestroy: ");
        super.onDestroy();
    }


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

關(guān)于Android中service的組件是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前文章:Android中service的組件是什么
當(dāng)前URL:http://www.dlmjj.cn/article/jjsehg.html