首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么onServiceConnected没有被调用?

为什么onServiceConnected没有被调用?
EN

Stack Overflow用户
提问于 2010-09-25 03:17:39
回答 1查看 6.1K关注 0票数 2

我是一个初学者,他制作了一个简单的程序来展示服务是如何工作的。

代码语言:javascript
复制
.....
toStartService = new Intent(this, SimpleService.class);
    sc = new ServiceConnection() {            
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Toast.makeText(MoreService.this, "SC: Binded", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            Toast.makeText(MoreService.this, "SC: Unbinded", Toast.LENGTH_SHORT).show();
        }    
    };


    startService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MoreService.this, "Starting Service", Toast.LENGTH_SHORT).show();
            startService(toStartService);        
        }
    });

    stopService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            stopService(toStartService);
        }
    });

    bindService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if((isBound = bindService(toStartService, sc, BIND_AUTO_CREATE))) {

            }
        }
    });

    unbindService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isBound) {
                unbindService(sc);
                isBound = false;
            }
        }
    });

}

为什么不传递sc变量(在bindService()上)调用sc.onServiceConnected()方法?密码有什么问题吗?

我满足了以下条件:

  • 当我按下startService时,服务开始得很好,然后stopService服务就停止了。
  • 当我按startService时,bindService什么也不做,unbindService也不做。
  • 当我按下bindService,它创建的服务,stopService不工作。我按unbindService,服务正在调用onDestroy()方法。

为什么bindService创建的服务在未绑定时被销毁?我尝试用startService启动服务,但它不能绑定。

帮帮我,如果我错了,很抱歉。

EN

回答 1

Stack Overflow用户

发布于 2010-09-25 03:31:54

这是所有这些方法的设计行为。例如,在根据bindService(Intent service, ServiceConnection conn, int flags)文献资料方法中,只有在调用上下文存在时,服务才会运行:

只有在调用上下文存在的情况下,系统才会考虑需要该服务。例如,如果此上下文是已停止的活动,则在该活动恢复之前,将不需要该服务继续运行。

对于unbindService (ServiceConnection conn),文档说:

断开与应用程序服务的连接。当服务重新启动时,您将不再接收呼叫,并且现在允许服务在任何时候停止。

文档中,它说:

使用startService()覆盖由bindService(Intent, ServiceConnection, int)管理的默认服务生存期:它要求服务在调用stopService(Intent)之前保持运行状态,而不管是否有客户端连接到它。请注意,对startService()的调用并不是嵌套式的:无论您调用startService()多少次,对stopService(Intent)的单个调用都会停止它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3792344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档