方法不会覆盖其 super class 的方法并且无法解析符号

Method does not override method from its super class & cannot resolve symbol

在覆盖中,我收到 "Method does not override method from its super class" 错误。我也在 super.onResume () 中得到 "onResume cannot resolve method" 错误;

它在 MainActivity 上工作,但当我将代码移至服务 class 时,出现此错误。

As you can see:

public class Servis extends Service implements SensorEventListener{

    SensorManager mgr;
    Sensor temp;
    TextView text;
    StringBuilder msg = new StringBuilder(2048);
    MediaPlayer mediaPlayer;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = MediaPlayer.create(Servis.this, R.raw.warning);
        mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
        temp = mgr.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); }

    @Override
    protected void onResume() {
        mgr.registerListener(this, temp, SensorManager.SENSOR_DELAY_NORMAL);
        super.onResume();
    }

    @Override
    protected void onPause() {
        mgr.unregisterListener(this, temp);
        super.onPause();
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

        public void onSensorChanged(SensorEvent event) {
            float fahrenheit = event.values[0] * 9 / 5 + 32;
            if(fahrenheit < 68)
                mediaPlayer.start();
    }
}

A Service is not an Activity,这就是为什么不能覆盖这些方法的原因。您可以安全地删除它们,而必须让 Activity 实现它们。当 Service implements SensorEventListener 时,它看起来像这样:

public class Servis extends Service implements SensorEventListener {

    @Override
    public void onCreate() {

    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

    }
    @Override
    public void onDestroy() {

    }
    @Override
    public IBinder onBind(Intent intent) {

    }


    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }    
    @Override
    public void onSensorChanged(SensorEvent event) {

    }
}

如上所述,服务 class 不包含您使用的方法,因此无需执行覆盖。参考Service documentation

您可能希望覆盖的关闭方法

onStart(Intent intent, int startId)

它可能是最接近 OnResume 的