시간 초과 알림을 구현하려고합니다. 여기 내가하고 싶은 것이있다. 앱이 배경 분위기로 전환되면 5 분 후에 앱이 로그 아웃됨을 사용자에게 경고해야합니다. 이 알림 후 사용자가 앱을 열면 암호를 묻습니다. 사용자가 올바른 패스를 입력하면 5 분 전에 떠난 화면을 가져와야합니다. 내 문제는 내가 암호를 입력 한 후 검색하기 위해 사용자가 남긴 활동을 저장할 수 없다는 것입니다. 여기까지 내가 한 일은 다음과 같습니다. onSaveInstanceState() 메서드 내부에 카운트 다운을 추가하고 현재 인 텐트의 인스턴스를 만듭니다. 그런 다음 TimeOutActivity에서 해당 인스턴스의 현재 활동을 전달하기 위해 savedActivity라는 속성을 정의했습니다. 시간 초과 경고 알림 후 활동 검색
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의 내부 활동을 검색 할 때, 내 재산 (savedActivity)은 null입니다. 내가 도대체 뭘 잘못하고있는 겁니까? 현재 활동을 저장하는 더 좋은 방법이 있습니까?
업데이트 10 월 31 일 2014 응용 프로그램을 확장하는 App.java 클래스를 정의했습니다. 이 클래스에서는 setter와 getter로 전역 변수를 정의 할 수 있습니다.
((App) this.getApplication()).setWebView(webView);
: 그것은 응용 프로그램 태그에 내 WebViewActivity 이동 중지() 메소드에 다음이
android:name="your.app.bundle.name.App"
추가의 AndroidManifest.xml에 다음 울부 짖는 소리
public class NGVApp extends Application
{
private WebView webView;
public WebView getWebView()
{
return webView;
}
public void setWebView(WebView webView)
{
this.webView = webView;
}
}
처럼, 나는 웹보기 예를 울부 짖는 소리처럼 설정
마지막으로 onCreate() 메소드에 다음을 추가했습니다.
@Override
protected void onCreate(Bundle savedInstanceState)
{
if(((NGVApp) this.getApplication()).getSavedInstanceBundle() != null)
{
savedInstanceState = ((NGVApp) this.getApplication()).getSavedInstanceBundle();
}
}
webView의 인스턴스를 성공적으로 가져올 수 있었지만 더 이상 null이 아니지만 webView 내용 (사용자가 시간 초과 전에 상호 작용 한 내용)이 포함되어 있지 않습니다.
앱이 백그라운드에서 종료되면 저장된 인스턴스도 null이됩니다. 이것을하기 위해'SharedPreferences'를 사용하고 마지막 활동 이름을 저장하고 거기에서 검색하는 것이 더 낫습니다. –
감사합니다. @BharathMg 방금 활동 이름을 저장하면 전체 활동을 검색 할 수 있습니까? 더 설명해 주시겠습니까? – Hamid
'Intent intent = new Intent(). setClassName (context, targetClassString);'을 사용하여 문자열 클래스 이름을 인 텐트로 변환 할 수 있습니다. –