Fixed some exceptions. Don't release app if backround service runs.
This commit is contained in:
parent
41787d7e1e
commit
3852e55aa5
3 changed files with 39 additions and 18 deletions
|
@ -49,6 +49,7 @@ public class NavigationService extends Service implements LocationListener {
|
||||||
|
|
||||||
private static WakeLock lockStatic;
|
private static WakeLock lockStatic;
|
||||||
private PendingIntent pendingIntent;
|
private PendingIntent pendingIntent;
|
||||||
|
private BroadcastReceiver broadcastReceiver;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBinder onBind(Intent intent) {
|
public IBinder onBind(Intent intent) {
|
||||||
|
@ -106,13 +107,14 @@ public class NavigationService extends Service implements LocationListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
// registering icon at top level
|
// registering icon at top level
|
||||||
registerReceiver(new BroadcastReceiver() {
|
broadcastReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
NavigationService.this.stopSelf();
|
NavigationService.this.stopSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
}, new IntentFilter(OSMAND_STOP_SERVICE_ACTION));
|
};
|
||||||
|
registerReceiver(broadcastReceiver, new IntentFilter(OSMAND_STOP_SERVICE_ACTION));
|
||||||
Intent notificationIntent = new Intent(OSMAND_STOP_SERVICE_ACTION);
|
Intent notificationIntent = new Intent(OSMAND_STOP_SERVICE_ACTION);
|
||||||
Notification notification = new Notification(R.drawable.icon, "", //$NON-NLS-1$
|
Notification notification = new Notification(R.drawable.icon, "", //$NON-NLS-1$
|
||||||
System.currentTimeMillis());
|
System.currentTimeMillis());
|
||||||
|
@ -150,6 +152,10 @@ public class NavigationService extends Service implements LocationListener {
|
||||||
// remove notification
|
// remove notification
|
||||||
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||||
mNotificationManager.cancel(NOTIFICATION_SERVICE_ID);
|
mNotificationManager.cancel(NOTIFICATION_SERVICE_ID);
|
||||||
|
if (broadcastReceiver != null) {
|
||||||
|
unregisterReceiver(broadcastReceiver);
|
||||||
|
broadcastReceiver = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -161,7 +167,10 @@ public class NavigationService extends Service implements LocationListener {
|
||||||
// unregister listener and wait next time
|
// unregister listener and wait next time
|
||||||
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
|
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
|
||||||
locationManager.removeUpdates(this);
|
locationManager.removeUpdates(this);
|
||||||
getLock(this).release();
|
WakeLock lock = getLock(this);
|
||||||
|
if (lock.isHeld()) {
|
||||||
|
lock.release();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
savingTrackHelper.insertData(location.getLatitude(), location.getLongitude(), location.getAltitude(),
|
savingTrackHelper.insertData(location.getLatitude(), location.getLongitude(), location.getAltitude(),
|
||||||
location.getSpeed(), location.getAccuracy(), location.getTime(), settings);
|
location.getSpeed(), location.getAccuracy(), location.getTime(), settings);
|
||||||
|
|
|
@ -212,12 +212,15 @@ public class MainMenuActivity extends Activity {
|
||||||
closeButton.setOnClickListener(new OnClickListener() {
|
closeButton.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
((OsmandApplication) activity.getApplication()).closeApplication();
|
getMyApplication().closeApplication();
|
||||||
//moveTaskToBack(true);
|
//moveTaskToBack(true);
|
||||||
activity.finish();
|
activity.finish();
|
||||||
|
//TODO this is different from MapActivity close...
|
||||||
|
if (getMyApplication().getNavigationService() == null) {
|
||||||
//http://stackoverflow.com/questions/2092951/how-to-close-android-application
|
//http://stackoverflow.com/questions/2092951/how-to-close-android-application
|
||||||
System.runFinalizersOnExit(true); //if any threads are running, they will prevent app from exit
|
System.runFinalizersOnExit(true);
|
||||||
System.exit(0); //exit
|
System.exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -235,7 +238,7 @@ public class MainMenuActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
startProgressDialog = new ProgressDialog(this);
|
startProgressDialog = new ProgressDialog(this);
|
||||||
((OsmandApplication)getApplication()).checkApplicationIsBeingInitialized(this, startProgressDialog);
|
getMyApplication().checkApplicationIsBeingInitialized(this, startProgressDialog);
|
||||||
SharedPreferences pref = getPreferences(MODE_WORLD_WRITEABLE);
|
SharedPreferences pref = getPreferences(MODE_WORLD_WRITEABLE);
|
||||||
boolean firstTime = false;
|
boolean firstTime = false;
|
||||||
if(!pref.contains(FIRST_TIME_APP_RUN)){
|
if(!pref.contains(FIRST_TIME_APP_RUN)){
|
||||||
|
@ -306,7 +309,7 @@ public class MainMenuActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void checkVectorIndexesDownloaded() {
|
protected void checkVectorIndexesDownloaded() {
|
||||||
MapRenderRepositories maps = ((OsmandApplication) getApplication()).getResourceManager().getRenderer();
|
MapRenderRepositories maps = getMyApplication().getResourceManager().getRenderer();
|
||||||
SharedPreferences pref = getPreferences(MODE_WORLD_WRITEABLE);
|
SharedPreferences pref = getPreferences(MODE_WORLD_WRITEABLE);
|
||||||
boolean check = pref.getBoolean(VECTOR_INDEXES_CHECK, true);
|
boolean check = pref.getBoolean(VECTOR_INDEXES_CHECK, true);
|
||||||
// do not show each time
|
// do not show each time
|
||||||
|
@ -339,6 +342,10 @@ public class MainMenuActivity extends Activity {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private OsmandApplication getMyApplication() {
|
||||||
|
return (OsmandApplication) getApplication();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Dialog onCreateDialog(int id) {
|
protected Dialog onCreateDialog(int id) {
|
||||||
if(id == OsmandApplication.PROGRESS_DIALOG){
|
if(id == OsmandApplication.PROGRESS_DIALOG){
|
||||||
|
|
|
@ -239,20 +239,25 @@ public class SavingTrackHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
public void insertData(double lat, double lon, double alt, double speed, double hdop, long time, OsmandSettings settings){
|
public void insertData(double lat, double lon, double alt, double speed, double hdop, long time, OsmandSettings settings){
|
||||||
if (time - lastTimeUpdated > settings.SAVE_TRACK_INTERVAL.get()*1000) {
|
if (time - lastTimeUpdated > settings.SAVE_TRACK_INTERVAL.get()*1000) {
|
||||||
SQLiteDatabase db = getWritableDatabase();
|
execWithClose(updateScript, new Object[] { lat, lon, alt, speed, hdop, time });
|
||||||
if (db != null) {
|
|
||||||
db.execSQL(updateScript, new Object[] { lat, lon, alt, speed, hdop, time });
|
|
||||||
}
|
|
||||||
lastTimeUpdated = time;
|
lastTimeUpdated = time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insertPointData(double lat, double lon, long time, String description) {
|
public void insertPointData(double lat, double lon, long time, String description) {
|
||||||
|
execWithClose(updatePointsScript, new Object[] { lat, lon, time, description });
|
||||||
|
}
|
||||||
|
|
||||||
|
private void execWithClose(String script, Object[] objects) {
|
||||||
SQLiteDatabase db = getWritableDatabase();
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
try {
|
||||||
if (db != null) {
|
if (db != null) {
|
||||||
db.execSQL(updatePointsScript, new Object[] { lat, lon, time, description });
|
db.execSQL(script, objects);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (db != null) {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue