В приведенном ниже коде я пытаюсь передать экземпляр активности в 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)