android service基础

一、启动/销毁service

//start service

intent = new Intent(context, MtpService.class);
intent.putExtra(UsbManager.USB_FUNCTION_PTP, true);
context.startService(intent);

//destroy service

context.stopService(new Intent(context, MtpService.class));

二、绑定/解绑定

private IMtpService mMtpService;

private final ServiceConnection mMtpServiceConnection = new ServiceConnection() {
         public void onServiceConnected(ComponentName className, android.os.IBinder service) {
            synchronized (this) {
                mMtpService = IMtpService.Stub.asInterface(service);
            }
        }

        public void onServiceDisconnected(ComponentName className) {
            synchronized (this) {
                mMtpService = null;
            }
        }

 };

//bind

context.bindService(new Intent(context, MtpService.class), mMtpServiceConnection, Context.BIND_AUTO_CREATE);

当bindService执行之后会自动调用mMtpServiceConnection接口里面的onServiceConnected方法,从而获得mMtpService,

然后在Activity里面就能够通过mMtpService调用IMtpService提供的方法。

//unbind

getContext().unbindService(mMtpServiceConnection);

unbindService之后不会自动调用mMtpServiceConnection接口里面的onServiceDisconnected方法,onServiceDisconnected只会

在Service被停止或者被系统杀死后调用。unbindService只是告诉系统对应的Activity不再使用该服务了,系统内存不足的时候可以优先

杀死这个服务。

Service在开始之后,除非调用stopService()或stopSelf(),否则不会停止。当然,如果内存不足,系统可能自动杀死Service。

三、IMtpService

新建文件IMtpService.aidl

package com.android.providers.media;

interface IMtpService
{
    void sendObjectAdded(int objectHandle);
    void sendObjectRemoved(int objectHandle);
}

是一个interface,具体实现在MtpService中。

四、MtpService

private final IMtpService.Stub mBinder =
            new IMtpService.Stub() {
        public void sendObjectAdded(int objectHandle) {

           //实现这个方法

        }

        public void sendObjectRemoved(int objectHandle) {
            //实现这个方法

        }
    };

在MtpService服务的onBind方法中返回这个mBinder。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值