T
the_time
Ambitioniertes Mitglied
- 0
Hallo,
ich versuche den locationManger in der TrackingService class zu entfernen wenn die App geschlossen wird order wenn der Buntzer den checkbox in der Menu von der MainAtivity checkt und NICHT wenn der Benutzer die activity wechselt. Ich mache das in der onDestroy(). Gbits eine Möglichkeit um in der onDestroy() zu checken ob die App geschlossen wird oder der Benutzer die activity wechelt?
Ich habe es mit isFinishing() versucht aber isFinishing wird in den beiden Fällen aufgerufen und liefert true zurück.
Gruß,
the_time
MainActivity:
TrackingService class:
Map activity:
ich versuche den locationManger in der TrackingService class zu entfernen wenn die App geschlossen wird order wenn der Buntzer den checkbox in der Menu von der MainAtivity checkt und NICHT wenn der Benutzer die activity wechselt. Ich mache das in der onDestroy(). Gbits eine Möglichkeit um in der onDestroy() zu checken ob die App geschlossen wird oder der Benutzer die activity wechelt?
Ich habe es mit isFinishing() versucht aber isFinishing wird in den beiden Fällen aufgerufen und liefert true zurück.
Code:
@Override
protected void onDestroy() {
super.onDestroy();
if(isFinishing()){
Intent i = new Intent(this, TrackingService.class);
stopService(i);
System.out.println("ABC Map onDestroy() was invoked!" + isFinishing());
}
}
Gruß,
the_time
MainActivity:
Code:
public class MainActivity extends ActionBarActivity implements
AsyncTaskCallback {
TrackingService mService;
boolean mBound = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.route_available);
// Start the TrackingService class.
Intent i = new Intent(this, TrackingService.class);
startService(i);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
System.out.println("test onCreateOptionsMenu was invoked.");
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem checkable = menu.findItem(R.id.checkable_menu);
checkable.setChecked(isChecked);
return true;
}
// Start and stop the background service.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.checkable_menu:
if (isChecked = !item.isChecked()) {
item.setChecked(isChecked);
Intent i = new Intent(this, TrackingService.class);
startService(i);
System.out.println("test if onOptionsItemSelected");
} else {
mService.stopTrackingService();
}
return true;
default:
return false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Intent i = new Intent(this, TrackingService.class);
stopService(i);
}
}
TrackingService class:
Code:
public class TrackingService extends Service implements AsyncTaskCallback,
LocationListener {
LocationManager lm;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
detectLocation();
return START_STICKY;
}
private void detectLocation() {
// TODO Auto-generated method stub
Toast.makeText(this, "Inside detectlocation()", Toast.LENGTH_SHORT)
.show();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 0,
this);
enableGPS(lm);
}
@Override
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(wifi_receiver);
System.out.println("ABC TrackingService onDestroy() was invoked.");
if(lm != null){
lm.removeUpdates(this);
System.out.println("ABC TrackingService lm was removed.");
}else{
System.out.println("ABC TrackingService lm locationManager is null.");
}
}
public void stopTrackingService(){
lm.removeUpdates(this);
}
}
Map activity:
Code:
public class Map extends FragmentActivity implements OnMapReadyCallback, ConnectionCallbacks, OnConnectionFailedListener{
@Override
protected void onDestroy() {
super.onDestroy();
// To stop the service when the user closed the app in the background and the map ativity was opened.
stopAlarm();
Intent i = new Intent(this, TrackingService.class);
stopService(i);
System.out.println("ABC Map onDestroy() was invoked!");
}
}
Zuletzt bearbeitet: