Merge pull request #14 from loadedion/master
Return to route list after app has been backgrounded for 3+ hours
This commit is contained in:
commit
cf0bf7b527
@ -9,10 +9,13 @@ import java.util.List;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlarmManager;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.util.Log;
|
||||
|
||||
@ -26,10 +29,14 @@ import com.googlecode.androidannotations.annotations.Bean;
|
||||
import com.googlecode.androidannotations.annotations.EApplication;
|
||||
|
||||
@EApplication
|
||||
public class BartRunnerApplication extends Application {
|
||||
public class BartRunnerApplication extends Application implements
|
||||
Application.ActivityLifecycleCallbacks {
|
||||
|
||||
private static final int FIVE_MINUTES = 5 * 60 * 1000;
|
||||
|
||||
private static final String CACHE_FILE_NAME = "lastBoardedDeparture";
|
||||
private static final String PREFS_NAME = "prefs_bart_runner";
|
||||
private static final String PREFS_ACTIVITY_TIMESTAMP = "prefs_activity_timestamp";
|
||||
|
||||
private Departure mBoardedDeparture;
|
||||
|
||||
@ -39,6 +46,8 @@ public class BartRunnerApplication extends Application {
|
||||
|
||||
private MediaPlayer mAlarmMediaPlayer;
|
||||
|
||||
private SharedPreferences mApplicationPreferences;
|
||||
|
||||
private static Context context;
|
||||
|
||||
@Bean
|
||||
@ -92,6 +101,8 @@ public class BartRunnerApplication extends Application {
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
context = getApplicationContext();
|
||||
mApplicationPreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
|
||||
registerActivityLifecycleCallbacks(this);
|
||||
}
|
||||
|
||||
public static Context getAppContext() {
|
||||
@ -222,4 +233,46 @@ public class BartRunnerApplication extends Application {
|
||||
public void setAlarmMediaPlayer(MediaPlayer alarmMediaPlayer) {
|
||||
this.mAlarmMediaPlayer = alarmMediaPlayer;
|
||||
}
|
||||
|
||||
public void setActivityTimestamp(long timestamp) {
|
||||
mApplicationPreferences.edit().putLong(PREFS_ACTIVITY_TIMESTAMP, timestamp).apply();
|
||||
}
|
||||
|
||||
public long getActivityTimestamp() {
|
||||
return mApplicationPreferences.getLong(PREFS_ACTIVITY_TIMESTAMP, 0L);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityStarted(Activity activity) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResumed(Activity activity) {
|
||||
setActivityTimestamp(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityPaused(Activity activity) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityStopped(Activity activity) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityDestroyed(Activity activity) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package com.dougkeen.bart.activities;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
||||
import com.dougkeen.bart.BartRunnerApplication;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public abstract class AbstractViewActivity extends AppCompatActivity {
|
||||
|
||||
private static final int MAXIMUM_IDLE_HOURS = 3;
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
BartRunnerApplication application = (BartRunnerApplication) getApplication();
|
||||
long lastActivity = application.getActivityTimestamp();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long timeDifference = currentTime - lastActivity;
|
||||
if (TimeUnit.MILLISECONDS.toHours(timeDifference) >= MAXIMUM_IDLE_HOURS) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
@ -53,7 +53,7 @@ import com.dougkeen.util.Assert;
|
||||
import com.dougkeen.util.Observer;
|
||||
import com.dougkeen.util.WakeLocker;
|
||||
|
||||
public class ViewDeparturesActivity extends AppCompatActivity implements
|
||||
public class ViewDeparturesActivity extends AbstractViewActivity implements
|
||||
EtdServiceListener {
|
||||
|
||||
private StationPair mStationPair;
|
||||
|
@ -13,7 +13,7 @@ import com.dougkeen.bart.R;
|
||||
import com.dougkeen.util.Assert;
|
||||
|
||||
|
||||
public class ViewMapActivity extends AppCompatActivity {
|
||||
public class ViewMapActivity extends AbstractViewActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -4,7 +4,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.2.2'
|
||||
classpath 'com.android.tools.build:gradle:2.2.3'
|
||||
// Used for annotation processing needed by the AndroidAnnotations library
|
||||
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.6'
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user