Android 为什么不是';有没有接通电话?

Android 为什么不是';有没有接通电话?,android,Android,我是一个初学者,制作了一个简单的程序来展示服务是如何工作的 ..... toStartService = new Intent(this, SimpleService.class); sc = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Toa

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

.....
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]时 服务开始得很好 [停止服务]服务停止得很好

  • 当我按下[startService]时,[bindService]什么也不做,[unbindService]也不做

  • 当我按下[bindService],它创建了服务,[stopService]没有工作。我按下[unbindService]该服务正在调用onDestroy()方法
为什么bindService创建的服务在取消绑定时会被销毁?我尝试使用startService启动服务,但它无法绑定


Arrgh help mee,如果我错了,很抱歉。

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

只要调用上下文存在,系统就会认为该服务是必需的。例如,如果此上下文是已停止的活动,则在该活动恢复之前,不需要继续运行服务

文件上说:

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

在报告中说:

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


谢谢,“只要调用上下文存在,服务就会运行”,那么如何绑定到已经运行的服务?如果该服务是由
startService
启动的,那么您可以绑定到它并在解除绑定后保持运行,但如果它是由
bindService
启动的,然后,只要调用上下文存在,它就会继续运行!为什么会这样?我也有同样的问题。现在我明白为什么很多人讨厌Java了。。。无论如何,当你说“代码有什么问题”时要非常小心,因为在这个网站上有数以百万计的假装“态度警察”,他们什么也不做,只是四处投票否决像你这样的问题。