博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绑定与解除服务
阅读量:3971 次
发布时间:2019-05-24

本文共 2809 字,大约阅读时间需要 9 分钟。

文章目录

创建安卓应用

在这里插入图片描述

编写布局文件

在这里插入图片描述

创建customservice 自定义服务类

在这里插入图片描述

package net.zjs.bind_unbind_service;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.util.Log;import androidx.annotation.Nullable;/** * 功能:自定义服务类 */public class CustomService extends Service {    private final String TAG="bind_unbind_service";//标记    //创建回调方法    @Override    public void onCreate() {        super.onCreate();        Log.d(TAG,"CustomService.onCreate() invoked.");    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        return super.onStartCommand(intent, flags, startId);    }    //销毁回调方法    @Override    public void onDestroy() {        super.onDestroy();        Log.d(TAG,"CustomService.onDestroy() invoked.");    }    //绑定回调方法    @Nullable    @Override    public IBinder onBind(Intent intent) {        Log.d(TAG,"CustomService.onBind() invoked");        //获取从窗口传递过来的数据        String message=intent.getStringExtra("message");        //显示数据        Log.d(TAG,"恭喜,成功绑定服务!主窗口传递的数据:"+message);        //返回绑定器对象        return new Binder();    }}

编写主界面类

在这里插入图片描述

package net.zjs.bind_unbind_service;import androidx.appcompat.app.AppCompatActivity;import android.app.Service;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.util.Log;import android.view.View;public class MainActivity extends AppCompatActivity {    private final String TAG="bind_unbind_service";//标记    private ServiceConnection conn;//服务连接对象    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    /*绑定服务*/    public void doBindService(View view){        //创建意图,显式指明要绑定的服务        Intent intent=new Intent(this,CustomService.class);        //让意图携带数据        intent.putExtra("message","安卓开发还真是有趣");        //创建服务谅解对象        conn=new ServiceConnection() {            @Override            public void onServiceConnected(ComponentName name, IBinder service) {                Log.d(TAG,"服务已连接");            }            @Override            public void onServiceDisconnected(ComponentName name) {                Log.d(TAG,"服务断开连接");            }        };        //按意图绑定服务        bindService(intent,conn, Service.BIND_AUTO_CREATE);    }    /*解绑服务*/    public void dounBindService(View view){        //判断服务连接是否为空        if(conn!=null){            //解绑服务            unbindService(conn);        }    }    /*销毁窗口时解绑服务*/    @Override    protected void onDestroy() {        super.onDestroy();        //判断服务连接是否为空        if(conn!=null){            //解绑服务            unbindService(conn);        }    }}

运行效果

在这里插入图片描述

  • 提示:在Logcat中才能看到运行成功与否
    在这里插入图片描述

转载地址:http://vjtki.baihongyu.com/

你可能感兴趣的文章
Android Fragment getActivity返回null解决
查看>>
Android(视频、图片)加载和缓存类库Glide
查看>>
Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
查看>>
Android音频系统之AudioPolicyService
查看>>
Android系统Root与静默安装
查看>>
Android Property实现介绍
查看>>
Android SystemProperties设置/取得系统属性的用法总结
查看>>
Android 休眠 FLAG_KEEP_SCREEN_ON
查看>>
Android添加onKeyLongPress事件
查看>>
使用微信api将内容分享给好友,或者发送到朋友圈
查看>>
android开发中输入法的弹出和隐藏
查看>>
Android 如何在自定义界面上启用输入法 (How to enable inputmethod for the custom UI)
查看>>
Android MediaCodec小结
查看>>
YUV格式说明
查看>>
MediaCodec and Camera: colorspaces don't match
查看>>
android adb 读写模式 挂载文件系统
查看>>
onTouchEvent方法的使用
查看>>
Android详细解释键盘和鼠标事件
查看>>
如何成为强大的程序员?
查看>>
打包时sun.misc.ServiceConfigurationError
查看>>