Recuperar uma atividade após a notificação de aviso de Tempo limite
Estou tentando implementar a notificação de tempo limite. Aqui está o que eu quero fazer. Se o aplicativo voltar ao clima de segundo plano, após 5 minutos, ele deve avisar ao usuário que o aplicativo será desconectado. Após esta notificação, se o usuário abrir o aplicativo, ele deverá solicitar a senha; se o usuário inserir a senha correta, ele deverá recuperar a tela que ele deixou há 5 minutos. Meu problema é que não consigo salvar a atividade que o usuário deixou para recuperar depois de inserir a senha. Aqui está o que eu fiz até agora: adicionei uma contagem regressiva dentro do método onSaveInstanceState () e crie uma instância da intenção atual. Em TimeOutActivity, defini uma propriedade chamada savedActivity para passar a atividade atual nessa instância.
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();
}
Em seguida, no método onStart (), adicionei o seguinte código:
@Override
public void onStart()
{
super.onStart();
if (isTimedOut)
{
// Load timedOut activity
startActivity(timOutActivity.getIntent());
isTimedOut = false;
}
}
Mas quando eu quero recuperar a atividade dentro do TimeOutActivity, minha propriedade (savedActivity) é nula. O que estou fazendo errado? Existe uma maneira melhor de salvar a atividade atual?
Atualização 31 de outubro de 2014 Eu defini uma classe chamada: App.java que estende o aplicativo. Por essa classe, eu posso definir variáveis globais com seus setters e getter. É como abaixo
public class NGVApp extends Application
{
private WebView webView;
public WebView getWebView()
{
return webView;
}
public void setWebView(WebView webView)
{
this.webView = webView;
}
}
Em AndroidManifest.xml, na tag Application, adicionei este
android:name="your.app.bundle.name.App"
Então, no meu método WebViewActivity onStop (), defino a instância do webView como abaixo:
((App) this.getApplication()).setWebView(webView);
E, finalmente, no método onCreate (), adicionei:
@Override
protected void onCreate(Bundle savedInstanceState)
{
if(((NGVApp) this.getApplication()).getSavedInstanceBundle() != null)
{
savedInstanceState = ((NGVApp) this.getApplication()).getSavedInstanceBundle();
}
}
Consegui obter com êxito a instância do webView e ele não é mais nulo, mas não contém o conteúdo do webView (aquele em que o usuário interagiu antes do tempo limite) tem alguma idéia?