Получить активность после предупреждения о превышении времени ожидания
Я пытаюсь реализовать уведомление о превышении времени ожидания. Вот что я хочу сделать. Если приложение переходит в фоновый режим, через 5 минут оно должно предупредить пользователя о выходе приложения. После этого уведомления, если пользователь открывает приложение, он должен запросить пароль, если пользователь вводит правильный пароль, он должен восстановить экран, который он покинул 5 минут назад. Моя проблема в том, что я не могу сохранить активность, которую пользователь оставил, чтобы восстановить после ввода пароля. Вот что я сделал до сих пор: я добавил обратный отсчет внутри метода onSaveInstanceState () и создал экземпляр текущего намерения. Затем в TimeOutActivity я определил свойство с именем saveActivity, чтобы передать текущую активность в этом экземпляре.
private boolean isTimedOut;
private TimeOutActivity timOutActivity;
private CountDownTimer timer;
@Override
protected void onSaveInstanceState(Bundle state)
{
super.onSaveInstanceState(state);
if (timOutActivity == null)
{
timOutActivity = new TimeOutActivity();
timOutActivity.setIntent(new Intent(getApplicationContext(), TimeOutActivity.class));
**timOutActivity.savedActivity = this;**
initializeTimer();
}
}
private void initializeTimer()
{
timer = new CountDownTimer(60000, 1000)
{
public void onTick(long millisUntilFinished)
{
if (millisUntilFinished / 1000 == 55)
{
showSignOutWarning();
isTimedOut = true;
}
}
public void onFinish()
{
// Push local notification
isSignedOut = true;
}
}.start();
}
Затем в методе onStart () я добавил следующий код:
@Override
public void onStart()
{
super.onStart();
if (isTimedOut)
{
// Load timedOut activity
startActivity(timOutActivity.getIntent());
isTimedOut = false;
}
}
Но когда я хочу получить действие внутри TimeOutActivity, мое свойство (saveActivity) имеет значение null. Что я делаю неправильно? Есть ли лучший способ сохранить текущую активность?
Обновление 31 октября 2014 Я определил класс под названием: App.java, который расширяет приложение. С помощью этого класса я могу определять глобальные переменные с их установщиками и получателями. Это как ниже
public class NGVApp extends Application
{
private WebView webView;
public WebView getWebView()
{
return webView;
}
public void setWebView(WebView webView)
{
this.webView = webView;
}
}
Затем в AndroidManifest.xml в теге приложения я добавил это
android:name="your.app.bundle.name.App"
Затем в моем методе WebViewActivity onStop () я установил экземпляр webView следующим образом:
((App) this.getApplication()).setWebView(webView);
И, наконец, в методе onCreate () я добавил:
@Override
protected void onCreate(Bundle savedInstanceState)
{
if(((NGVApp) this.getApplication()).getSavedInstanceBundle() != null)
{
savedInstanceState = ((NGVApp) this.getApplication()).getSavedInstanceBundle();
}
}
Я мог бы успешно получить экземпляр webView, и он больше не является нулевым, но он не содержит содержимого webView (того, с которым пользователь взаимодействовал до истечения времени ожидания), есть идеи?