私はアンドロイドアプリを開発中です。アクティビティライフサイクルのコールバックを登録しようとしています。私は、次のを持ってonCreate
方法で私のランチャー活性(Agreement.java)でアンドロイドの活動ライフサイクルが登録されていません。
:
this.getApplication().registerActivityLifecycleCallbacks(new LoginManager());
この活動は、契約が合意されている場合はチェックを行い、そしてその直後に終了し、LoginActivityを呼び出す場合。私の活動コールバッククラスで持っているトースト通知は表示されず、どちらもログカットメッセージを表示しないので、起動したようには見えません。以下は
だから繰り返すために、契約クラスはライフサイクルコールバック(LoginManager)を登録
public class LoginManager extends Application implements Application.ActivityLifecycleCallbacks
{
private final String TAG = "LoginManager";
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState)
{
Toast.makeText(activity, "Activity Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "Activity Created");
long currentEpochTime = System.currentTimeMillis()/1000l;
Log.d(TAG, "Current Epoch: " + currentEpochTime);
CommonTasks commonTasks = new CommonTasks(activity);
SharedPreferences settings = commonTasks.getAppsSharedPreferences();
long timeDifference = currentEpochTime - settings.getLong(Defines.SharedPreferenceSettings.LAST_ACTIVE_EPOCH, 0);
Log.d(TAG, "Time Difference: " + timeDifference);
if (timeDifference >= 120) //2 Minutes
{
Log.d(TAG, "Logging out");
//Over 2 minutes so we need to logout
Intent intent = new Intent(activity, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(intent);
}
else
{
Log.d(TAG, "Not Logging Out");
//No need to logout, save the current time
SharedPreferences.Editor editor = settings.edit();
editor.putLong(Defines.SharedPreferenceSettings.LAST_ACTIVE_EPOCH, currentEpochTime);
editor.commit();
}
}
をバックアップアクティビティの呼び出しを実装LoginManagerクラスが瞬時に閉じ、LoginActivityを示すが、トーストとlogcatはないですトリガーされた。
ありがとうございます
から
を削除して、ログが何も生成しませんか? – Petro
2分後に新しいアクティビティを開始すると、強制的にログイン画面に戻ります。これは誰かがアクティビティに2分以上滞在するのを止めるものではありません... –
@ cricket_007私はそれについて心配する必要はありません – Boardy