首页 > 其他分享 >绑定和解绑服务 2

绑定和解绑服务 2

时间:2023-03-14 14:12:13浏览次数:33  
标签:服务 和解 service Button 绑定 MyService Intent Override public

第十章

MyService.java 代码如下:

...
public class MyService extends Service { private static final String TAG = "MyService"; public MyService() { } private DownloadBinder mBinder = new DownloadBinder(); class DownloadBinder extends Binder { public void startDownload() { Log.d("MyService", "startDownload executed"); } public int getProgress() { Log.d("MyService", "getProgress executed"); return 0; } } @Override public IBinder onBind(Intent intent) { return mBinder; } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand: Service Start"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { Log.d(TAG, "onDestroy: Service Stop"); super.onDestroy(); } }

 

MainActivity.java 代码如下:

...
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private MyService.DownloadBinder downloadBinder;
    private ServiceConnection connection = new ServiceConnection() {
        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            downloadBinder = (MyService.DownloadBinder) service;
            downloadBinder.startDownload();
            downloadBinder.getProgress();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button startService = (Button) findViewById(R.id.start_service);
        Button stopService = (Button) findViewById(R.id.stop_service);
        startService.setOnClickListener(this);
        stopService.setOnClickListener(this);
        Button bindService = (Button) findViewById(R.id.bind_service);
        Button unbindService = (Button) findViewById(R.id.unbind_service);
        bindService.setOnClickListener(this);
        unbindService.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.start_service:
                Intent startIntent = new Intent(this, MyService.class);
                startService(startIntent); // 启动服务
                break;
            case R.id.stop_service:
                Intent stopIntent = new Intent(this, MyService.class);
                stopService(stopIntent); // 停止服务
                break;
            case R.id.bind_service:
                Intent bindIntent = new Intent(this, MyService.class);
                bindService(bindIntent, connection, BIND_AUTO_CREATE); // 绑定服务
                break;
            case R.id.unbind_service:
                unbindService(connection); // 解绑服务
                break;
            default:
                break;
        }
    }
}

 

activity_main.xml 代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/start_service"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Start Service" />
    <Button
        android:id="@+id/stop_service"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Stop Service" />
    <Button
        android:id="@+id/bind_service"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Bind Service" />
    <Button
        android:id="@+id/unbind_service"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Unbind Service" />
</LinearLayout>
View Code

 

标签:服务,和解,service,Button,绑定,MyService,Intent,Override,public
From: https://www.cnblogs.com/yaolaoer/p/17214724.html

相关文章

  • 【服务器数据恢复】服务器断电导致RAID5卡硬件损坏,无法进入操作系统的数据恢复
    服务器数据恢复环境:某品牌ProLiantDL系列服务器,6块SAS硬盘组成RAID5磁盘阵列,WINDOWSSERVER操作系统,存储了企业的内部文件。服务器故障&分析:服务器在发生故障前有过......
  • 关于长连接服务器和客户端之间要加入心跳的一些讨论
    在之前的章节里深入浅出TCPIP之深入浅出TCPIP之TCP重传机制我们都知道了TCPIP协议栈有个默认的TCP心跳机制,这个心跳机制是和socket绑定的,可以对指定的套接字开启协议栈的心......
  • Mac 在启动时显示空白灰色/蓝色屏幕的原因和解决方法
    当您启动Mac时,如果看到空白灰色或蓝色的屏幕,这可能是由多种原因引起的。如下图:以下是一些可能的原因和解决方法:尝试从“macOS恢复”启动如果你的Mac似乎已开机,但一直显......
  • Nginx:轻松搭建高性能Web服务的必备利器
    一、Nginx简介1.1Nginx的特点和优点高性能:Nginx采用了事件驱动、异步非阻塞的处理方式,可以处理大量并发连接请求,同时减少服务器资源的占用。它的吞吐量比传统的Web服务器高......
  • 陪诊小程序app|陪护护工系统开发|陪诊服务平台定制
     陪诊小程序应用起来非常的方便,而且用户无需下载,只要在小程序上明确的填写好自己的需求,就可以等陪诊师接单了,简单又方便,不仅智能化,而且也非常的人性化。 开发陪诊小程序......
  • 服务中的时区设置
    遇到的问题:A服务请求B服务的接口,接口参数包含一个日期参数time,time为时间戳,在java中为long类型。至于这个time参数,A服务是读库拿到一个datetime类型的字段,然后转成时间......
  • gRPC之.Net6中的客户端和服务端共用proto协议文件
    1、说明在上一篇文章gRPC之.Net6中的初步使用介绍中,我们简单的介绍了gRPC在服务端、客户端以及Web项目中的使用。有一个问题,不知道大家发现没有,就是不管在服务端项目还是......
  • WebGIS|阿里云服务器配置Geoserver并发布服务
    前期准备购买阿里云的ECS服务器,创建实例,进入实例概述,查看这个实例的基本情况,这里我的实例的操作系统为系统为Ubuntu20.04。内存为4G,这里要注意的是公网IP,这时之后我们访......
  • 【Linux】服务器免密登录
    ssh-copy-id-i~/.ssh/id_rsa.pub<user>@<server>  免密登录,需要先在本机生成公钥,然后将公钥拷贝到远程主机,拷贝的过程,既可以手动(在远程主机根目录下创建.ssh目录,然......
  • 鸿蒙生态应用/服务开发三大理念简述
    鸿蒙生态应用与服务开发三大理念一次开发,多端部署:多种设备类型,无需重复开发多套代码,维护多个版本;数据同步降低复杂度,降低多设备开发环境获取门槛,多端界面快速预览效果,提......