Как передать экземпляр действия в службу, чтобы сформировать слабую ссылку - PullRequest
0 голосов
/ 15 июня 2019

В приведенном ниже коде я пытаюсь передать экземпляр активности в GPSService и сформировать слабую ссылку между обоими контекстами. но во время выполнения я получаю приведенную ниже ошибку, которая указывает, что getApplicationContext () не может быть преобразован в MainActivity

пожалуйста, дайте мне знать, как передать экземпляр mainActivity в службу.

код

  @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "GPS_READINGS", Toast.LENGTH_SHORT).show();
            GPSService gpsService = new GPSService((MainActivity) getApplicationContext());
            Intent intentStartGPSService = new Intent(getApplicationContext(), GPSService.class);
            intentStartGPSService.setAction(ACTION_START_GPS_READING);
            startService(intentStartGPSService);
        }
    });

обслуживание :

public GPSService(Context mainActivity) {
    this.mWeakRefToMainActivity = new WeakReference<>((MainActivity) mainActivity);
}

//causes the same error
/*public GPSService(MainActivity mainActivity) {
    this.mWeakRefToMainActivity = new WeakReference<>((MainActivity) mainActivity);
}*/

ошибка

2019-06-15 02:01:26.848 27745-27745/com.example.gps_v10 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.gps_v10, PID: 27745
java.lang.ClassCastException: android.app.Application cannot be cast to com.example.gps_v10.MainActivity
    at com.example.gps_v10.MainActivity$1.onClick(MainActivity.java:49)
    at android.view.View.performClick(View.java:6256)
    at android.view.View$PerformClick.run(View.java:24701)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
...