在 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 被调用,因此您的侦听器被取消,这就是它停止工作的原因。
我的应用程序包含 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 被调用,因此您的侦听器被取消,这就是它停止工作的原因。