我有4个类,1个父类和2个继承子(兄弟姐妹),以及一个接口(服务回调,它通过Android开发完成的方式,每一组时间(例如每5秒)执行一次操作)。
发布3个类,不包括界面以减少一些代码
父类,BaseActivity.java
public class ChildActivity_A extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// some activity configurations here.
}
@Override
public void onBackgroundServiceCallback() {
// concrete implementation goes here, and will work
}
}
继承Child,ChildActivity_A.java
public class ChildActivity_B extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// some activity configurations here.
// if I call super.startBackgroundService() or this.startBackgroundService
// ChildActivity_A's implementation is not being called
}
}
正如您在上面看到的那样(后台服务正在做什么)Child_A的具体方法(每次回调发生时实现都会起作用
现在这就变得棘手了(在我看来) 这是第三类
继承子ChildActivity_B.java
{{1}}
如果我从ChildActivity_B调用startBackgroundService,则不会调用ChildActivity_A上的具体实现
我在android开发之前一直在做java程序,把事情视为理所当然,我想我错过了一些关于继承的事情让我在这种情况下感到困惑。
我只需要对它为什么会发生一些启示,(顺便说一句,我通过在自定义Application类中设置静态标志来解决实际问题,以便在活动中启动服务)
答案 0 :(得分:1)
在您的代码中,"BaseActivity.this.startBackgroundService()"
实际上是启动后台服务,可在BaseActivity.java
中找到。在ChildActivity_B
super.onCreate(savedInstanceState);
中,您BaseActivity.java
正在调用它。因此,它只会调用它的超级方法,该方法可以在其超级ChildActivity_A
中使用,而不是ChildActivity_B
。 ChildActivity_A
实际上并不了解{{1}}。