我有一個android應用程序,需要用戶登錄憑據才能訪問某些數據。我想要做的是當用戶決定退出整個APP而不是一個Activity時,如果非活動時間超過20秒,它將調用註銷方法。因此,我需要一個運行的代碼,它能夠檢查應用程序在後臺,這個程序應該恭維做下面的代碼:當應用程序在後臺運行註銷方法
IdleLogout方法:
public void IdleLogout(){
Log.i("RootActivity:IdleLogout()","******APP LOGGEDOUT******");
SharedPreferences pref = getSharedPreferences(getString(R.string.pref_current_user), MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear(); // CLEAR ALL FILEDS
editor.commit(); // COMMIT CHANGES
setloginButton(); // Change logout button to login
RootActivity.alertDialog(RootActivity.this,getCustomIntent(PropertyActivity.class)).create().show();
//startActivity(getCustomIntent(PropertyActivity.class)); //Return page to PROPERTYACTIVITY.
}
WLL利用當前的活動時間
@Override
public void onStop(){
super.onStop();
//get the current time on exit
curDate = new Date();
Log.i("RootActivity:onStop()","******curDate=******"+curDate);
}
將採取活動時用戶恢復應用
@Override
protected void onResume() {
super.onResume();
setloginButton();
EnquiryActivity.PROPERTY = 0;
//EDITED FOR SESSION LOGOUT
//Get the Resume Time
resumeDate = new Date();
Log.i("RootActivity:onResume()","******resumeDate=******"+resumeDate);
long diff = resumeDate.getTime() - curDate.getTime();
long secInt = diff/1000 % 60; //conversion of milliseconds into human readable form
Log.i("RootActivity:onResume()","******sectInt=******"+secInt);
if (secInt > Inactivity_Timeout){// SET EXIT SCREEN INTERVAL LOGOUT
IdleLogout();
}
}
當然,我的朋友。這是我成功使用我的應用程序的方式。 – 2014-09-13 04:46:38
你有多個活動?如果是這樣,它們中的每一個都應該從在onPause和onResume內部發送廣播的自定義創建的活動中擴展。第一個告訴服務開始倒計時,後者告訴服務取消倒計時(如果有的話)。使用Intents進行溝通,因爲它是一種快速,安全和簡單的方式。 – 2014-09-13 04:48:15
是的,我確實有多項活動,我想澄清一下我對你寫的內容的理解,我真的很困惑。你是否指的是我開始實施 - >公共靜態類MyApplication擴展應用程序,然後將調用activityResume和activityPaused? – 2014-09-13 04:56:29