【问题标题】:how to call a service method from a non-Activity class in android如何从android中的非Activity类调用服务方法
【发布时间】: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类,其中实现了bindServiceunbindServicestartService方法,然后可以从你的扩展类中使用它们。

标签: java android android-intent service


【解决方案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 成员吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2011-02-20
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多