【问题标题】:Service call backs to activity in android服务回调到android中的活动
【发布时间】:2010-01-08 08:46:26
【问题描述】:

我有一个正在运行的后台服务和一个与该服务交互的客户端。

当客户端请求某些操作时,服务会执行它,并将结果发送回活动(客户端)。

我知道如何在活动中调用服务方法,并且使用回调我们可以实现我想要做的事情。但是我无法理解Api demos(remoteservice)中提供的回调机制和代码示例。

有人能解释一下这个服务回调是如何工作的吗?或使用更简单的机制可以实现的任何事情。

【问题讨论】:

    标签: android callback service


    【解决方案1】:

    这是流程
    创建调用服务的意图。您可以使用startService()BindService()BIND_AUTO_CREATE

    一旦服务绑定,它将创建一个隧道来与它的客户端对话,即IBinder 界面。这由您的 AIDL 接口实现使用并在

    中返回 IBinder
    private final MyServiceInterface.Stub mBinder = new MyServiceInterface.Stub() {
        public int getNumber() {
            return new Random().nextInt(100);
        }
    };
    
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "Service OnBind()", Toast.LENGTH_LONG).show();
        return mBinder;
    }
    

    一旦它返回mBinder,你在客户端创建的ServiceConnection会被回调,你会通过这个得到服务接口

               mConnection = new ServiceConnection() {
    
            public void onServiceDisconnected(ComponentName name) {
                // TODO Auto-generated method stub
    
            }
    
            public void onServiceConnected(ComponentName name, IBinder service) {
                // TODO Auto-generated method stub
    
                mService = MyServiceInterface.Stub.asInterface(service);
    
    
        };
    

    现在您有了mService 接口,可以从中调用和检索任何服务

    【讨论】:

    • 如何从服务回调到活动?
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多