绑定到服务并执行一些方法?

Posted

技术标签:

【中文标题】绑定到服务并执行一些方法?【英文标题】:Bind to Service and execute some methods? 【发布时间】:2011-03-10 11:14:58 【问题描述】:

好的,我明白了,当您绑定到远程 Service 时,它不会绑定,直到您从回调中返回。我需要绑定到服务并立即从中执行一些方法。有什么办法吗?我的代码如下:

try 
            Parser parser = FrameworkBridge.getFrameworkBridge(this).getParser();
            if (parser != null) 
                for (Article a : parser.getArticlesList("http://www.bt.dk/mecommobile/latest/news_article/%s/%s?output_type=xml", 1379, 20)) 
                    listAdapter.add(a);
                
            
         catch (RemoteException e) 
            Log.d(TAG, "Service communication failure");
         catch (FrameworkNotInstalledException e) 
            Log.d(TAG, "No framework installed. Install it!");
        

这里FrameworkBridge.getFrameworkBridge(this).getParser() 执行所有服务连接例程并返回远程接口。问题是——当我在上面的代码中时,连接还没有执行,因此parsernull。如何在退出代码之前使其连接?

【问题讨论】:

【参考方案1】:

onServiceConnected(..) 将告诉您何时连接服务并建立远程接口。在触发之前不要尝试调用服务中的任何方法。

【讨论】:

是的,但是在我退出回调之前,它没有连接。如果我在循环中等待它从 onServiceConnected 返回 true,这将是一个永恒的循环:我不会离开循环让它绑定,一直等到它绑定。 好的,我从onServiceConnected 开始了一个AsyncTask,它在完成后触发Handler,使用来自Service 的信息更新UI。谢谢你的想法。【参考方案2】:
mContext.bindService( new Intent("name of the class"), this, Context.BIND_AUTO_CREATE);

上述对您存储的上下文副本的方法调用应该会在您需要时自动绑定服务。我不是 100% 确定,但这应该会对您有所帮助。

【讨论】:

我在上下文的副本上调用它:我将this 传递给FrameworkBridge 类,然后使用它调用bindService 方法。

以上是关于绑定到服务并执行一些方法?的主要内容,如果未能解决你的问题,请参考以下文章

Android 远程服务回调

spring执行事务提交后进行一些逻辑操作

Android 服务的限制

执行包任务 - 有没有办法将Child Package参数绑定到常量?

5-3 Vue3数据绑定显示列表数据

5-3 Vue3数据绑定显示列表数据