假设我有一个接口类:
public class A extends AppCompatActivity implements interfaceClass{
@Override
public void message() {
// message: this is class A implementing interface
}
}
public class B extends AppCompatActivity implements interfaceClass{
@Override
public void message() {
// message: this is class B implementing interface
}
}
接口由两个活动A和B实现:
public class serviceClass extends Service {
interfaceClass object = (interfaceClass)context;
object.message();
}
现在我有服务,我希望通过创建接口类的对象来调用活动A和B实现的接口类的方法,但我不知道如何初始化接口类对象为了从A或B类调用方法实现
{{1}}
有关如何获取活动A或B的上下文以初始化对象的任何建议???
答案 0 :(得分:1)
我相信您可以使用绑定服务解决此问题:https://developer.android.com/guide/components/bound-services.html
然后你可以设置你的活动层次结构:
public abstract class ServiceActivity extends AppCompatActivity implements MyInterface {
protected MyService service;
...
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
MyBinder myBinder = (MyBinder) binder;
service = myBinder.getService();
...
}
}
和
public class A extends ServiceActivity {...}
public class B extends ServiceActivity {...}
现在,在您的服务中,您可能有这样的方法:
public void useInterface(MyInterface i) {
i.doSomething();
}
您可以通过以下活动致电:
service.useInterface(this);
答案 1 :(得分:0)
对于你的问题:无法在服务中获取活动对象。
在使用中,您无法获得活动的Context
。您只能获得ApplicationContext
服务和BroadcastReceiver
。
如果您想通过服务与活动进行沟通,可以使用©
。
有关广播的更多信息:https://developer.android.com/guide/components/broadcasts.html