如何从android中的非Activity类调用服务方法
Posted
技术标签:
【中文标题】如何从android中的非Activity类调用服务方法【英文标题】:how to call a service method from a non-Activity class in android 【发布时间】:2013-08-23 19:24:48 【问题描述】:我看到了这个关于如何绑定服务并从 Activity 调用其方法的示例。
http://developer.android.com/reference/android/app/Service.html#LocalServiceSample
但我想绑定一个服务并从非 Activity 类调用它的方法。
我该怎么做?
因为我没有实现以下方法:
bindService, unbindService
【问题讨论】:
你只需要一个上下文来绑定一个服务。上下文可以是活动、服务或应用程序。 我没有实现以下方法:bindService、unbindService bindService 是 Context 的一个方法。你需要一个上下文来使用 bindService 我明白了。推荐的解决方法是什么?创建一个虚拟上下文成员?获取应用程序的上下文? 你的类需要扩展android.content.ContextWrapper
类,其中实现了bindService
、unbindService
和startService
方法,然后可以从你的扩展类中使用它们。
【参考方案1】:
通过与Activity
相同的方式,只需获取/传递content
Activity 的实例
假设你有 MyActivity
类
和OtherClass
类
所以你在OtherClass
运行
public class OtherClass
Context mContext;
public void init(Context context)
mContext = context;
...
mContext.startService(new Intent(mContext, SomeService.class));
[编辑]
在你的情况下:
Intent intent = new Intent(mContext, LocalService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
参见文档here
【讨论】:
我没有实现以下方法:bindService、unbindService 我不喜欢使用这些方法,但它们的概念相同 但我是从android开发官方网站上拿的。那怎么办 但我不想启动该服务。我想绑定一个正在运行的。 再次:bindService
你提到的如果我的类不继承自 Context 可以解决吗?我真的需要操纵 mContext 成员吗?以上是关于如何从android中的非Activity类调用服务方法的主要内容,如果未能解决你的问题,请参考以下文章
Android 如何从 Main Activity 中的另一个类调用 Activity 数据类型?
如何从另一个类(它扩展了 Activity)方法,Android 调用 CCColorLayer 类的方法?