在 Activity 之间切换时保持特定 activity 活动

Keep a specific activity alive while switching between Activities

我的应用程序包含 6 个独立的活动,其中一个是 return GPS 协调,这个 activity 在打开时工作得很好但首先我 return 到主 activity 它停止更新位置。

详情: 我创建了一个 GPS services 并在 Manifest.xml

中调用了它
<service android:name=".Services.GPS_Service" />

这是服务:

public class GPS_Service extends Service {

    private LocationListener listener;
    private LocationManager locationManager;


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

    @SuppressLint("MissingPermission")
    @Override
    public void onCreate() {
        listener = new LocationListener() {

            @Override
            public void onLocationChanged(Location location) {

                Intent i = new Intent("location_update");
                i.putExtra("Longitude", location.getLongitude());
                i.putExtra("Latitude", location.getLatitude());

                final Date date = new Date(location.getTime());
                final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

                i.putExtra("time", sdf.format(date));
                sendBroadcast(i);
            }
            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {

            }
            @Override
            public void onProviderEnabled(String s) {
            }
            @Override
            public void onProviderDisabled(String s) {
                Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(i);
            }
        };
        locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
        //noinspection MissingPermission
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, listener);
    }
    @SuppressLint("MissingPermission")
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (locationManager != null) {
            //noinspection MissingPermission
            locationManager.removeUpdates(listener);
        }
    }
}

您不能同时激活两个活动。您必须使用 Android 服务来更新位置。

根据你的回答和你使用的措辞:“当它打开但首先我 return 到主 activity” - 我假设 'I return to the main activity' 你的意思是涉及 onBackPressed,或者只是调用了一个简单的 finish()。出于这个原因,onDestroy 被调用,因此您的侦听器被取消,这就是它停止工作的原因。