androidvncserver下载_android bindservice

androidvncserver下载_android bindservice关于安卓BindService绑定问题BindService主要用于当用户想要将活动activity与service进行绑定,当activity结束时(调用者)service也跟着一起结束了;而startService()只能用来启动服务,当服务启动后,就与前台活动没有了关系;当我们要从service外部获得service中的方法内容时,我们必须要Ibinder返回的service对象

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

关于安卓BindService 绑定问题
BindService 主要用于当用户想要将活动activity与service进行绑定,当activity结束时(调用者)service也跟着一起结束了;而startService()只能用来启动服务,当服务启动后,就与前台活动没有了关系;
当我们要从service外部获得service中的方法内容时,我们必须要Ibinder返回的service对象才能操作;所以我们必须利用bindservice的方式去绑定服务获取binder对象,利用binder的方式去获取service的方法内容;


使用bindservice的具体过程如下:
1)创建意图:Intent intent = new Intent(MainActivity.this,BindService.class);
2)创建bindservice对象:bindService(intent,conn,BIND_AUTO_CREATE);
3)创建内部类MyBinder、新建mybinder对象:
private  MyBinder myBinder = new MyBinder();
    class MyBinder extends Binder{
        public BindService getService(){
            return BindService.this;
        }
    }
4)onBind()返回mybinder对象:
public IBinder onBind(Intent intent) {
        return myBinder;
    }
5)通过serviceconnection获取Binder对象进一步来获取service对象,最后调用service中的方法:
ServiceConnection conn = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            BindService.MyBinder binder = (BindService.MyBinder)service;
            BindService bindService = binder.getService();
            bindService.print();
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

示例代码:
MainActivity
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initEvent();
    }
    ServiceConnection conn = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            BindService.MyBinder binder = (BindService.MyBinder)service;
            BindService bindService = binder.getService();
            bindService.print();
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

    private void initEvent() {
        findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,BindService.class);
                bindService(intent,conn,BIND_AUTO_CREATE);
            }
        });
        findViewById(R.id.button5).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                unbindService(conn);
            }
        });
    }
}
BindService
public class BindService extends Service {
    
    public void print(){
        Log.d(TAG, "print: BindService");
    }
    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate");
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Log.d(TAG, "onStart");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand");
        return super.onStartCommand(intent, flags, startId);
        
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.d(TAG, "onUnbind:");
        return super.onUnbind(intent);
    }

    @Override
    public void onRebind(Intent intent) {
        Log.d(TAG, "onRebind");
        super.onRebind(intent);
    }

    private  MyBinder myBinder = new MyBinder();
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return myBinder;
    }
    class MyBinder extends Binder{
        public BindService getService(){
            return BindService.this;
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193749.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么

    清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么类型:系统其它大小:21.5M语言:中文评分:10.0标签:立即下载电脑用久了是会堆积一些系统垃圾的,这类垃圾不好清理,很多小伙伴选择使用cmd清理垃圾命令代码来清理,cmd清理垃圾命令代码是什么,西西小编来为大家介绍。cmd清理垃圾命令代码是什么使用方法:新建一个文本文档,然后复制代码进去,保存,把保存的文本文档,后缀名txt修改成bat,确定,然后双击运行,它就会自动帮你清理了。代码:@ec…

    2022年6月18日
    30
  • Eclipse汉化教程2021年最新

    Eclipse汉化教程2021年最新Eclipse汉化教程1.复制汉化连接https://download.eclipse.org/technology/babel/update-site/latest/,网址为:https://www.eclipse.org/babel/downloads.php2.打开Eclipse,Help—>installnewsoftware…—>Add…—>Name随便起一个;Location将刚刚复制的链接粘贴上来,等待下载3.选择BabelLanguagePacksf

    2022年6月5日
    32
  • python endswith函数_Python的startswith和endswith

    python endswith函数_Python的startswith和endswith做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束。Python为此提供了两个函数:S.startswith(prefix[,start[,end]])->bool如果字符串S以prefix开始,返回True,否则返回False。start和end是两个可以缺省的参数。分别是开始比较的位置和结束比较的位置。这个函数也可以写成S[start:end].startswith(pr…

    2025年6月3日
    2
  • 浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别博主说:首先,大家在使用SSM框架进行web开发的时候,经常会在Ctrl层遇到@RequestMapping、@ResponseBody以及@RequestBody这三个参数,博主就以自己在项目开发中总结的一些知识点浅谈一下三者之间微妙的关系。1.@RequestMapping国际惯例先介绍什么是@RequestMapping,@RequestMapping是一个用来处理请求地址映射的注解,可用

    2022年5月28日
    106
  • tcp/ip详解(三卷全)pdf_tcp/ip详解pdf

    tcp/ip详解(三卷全)pdf_tcp/ip详解pdftcpdf类生成PDF文件:        一、安装tcpdf        二、tcpdf插件中examples      三、写入方法生成pdf页面              方法一、在index.php中写入pdfdemo方法                             01)、使用命名空间                                      u…

    2022年9月8日
    2
  • latex大括号各行内容左对齐_word公式大括号左对齐

    latex大括号各行内容左对齐_word公式大括号左对齐终于找到个好用的了{aaaaaaaaaaaaaaaaabc\left\{\begin{array}{l}a\\aaaaaaaaaaaaaaa\\abc\end{array}\right.⎩⎨⎧​aaaaaaaaaaaaaaaaabc​$$\left\{\begin{array}{l}a\\aaaaaaaaaaaaaaa\\abc\end{array}\right.$$…

    2022年10月11日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号