3

PayPal など、アプリケーションのタイムアウトを処理する最善の方法は何かと考えていました。ユーザーに 1、5、または 15 分のタイムアウト期間を選択してもらいたいので、アプリケーションを開いたときに再度ログインする必要があります。

私の onResume メソッド:

@Override
    public void onResume() {

    } 

その中には何もありません。しかし、それはクラッシュします。

注: 私のアプリには 2 つのアクティビティがあります。最初のアクティビティはログイン画面です。2 番目のアクティビティはメイン画面です。onResume メソッドは 2 番目のアクティビティにあります。

4

2 に答える 2

9

私は自分のアプリの1つでこれを行いました:

すべてのアクティビティが拡張されるベース アクティビティが必要です。このベース アクティビティで、「最後のユーザー アクティビティ」のタイムスタンプを追跡する変数を追加します。私の場合、ユーザー アクティビティとは単に画面に触れたことを意味します。したがって、dispatchTouchEvent(MotionEvent ev) メソッドをオーバーライドし、「最後のユーザー アクティビティ」を現在のタイムスタンプに設定します。

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    lastActivity = new Date().getTime();
    return super.dispatchTouchEvent(ev);
}

次に、この基本アクティビティの onResume() メソッドで、現在のタイムスタンプを「最後のユーザー アクティビティ」のタイムスタンプと比較します。1 分、5 分、または 15 分 (ユーザーが設定可能) を超える場合は、別のアクティビティを起動して、ユーザーにログインを要求します。

@Override
public void onResume() {
    long now = new Date().getTime();
    if (now - lastActivity > xxxx) {
       // startActivity and force logon
    }
} 
于 2012-07-15T22:25:28.710 に答える
0

アプリの実行中およびアクティブ中にハートビート タイマーを使用し、現在の時間 (または最後のアクティビティ時間 - いずれか) を追跡します。ユーザーがホームボタンを押してアプリがバックグラウンドになった場合 (または終了 - 戻るボタンの処理方法がわからない場合) - 値を共有設定に保存して記憶します。アプリの起動時または再開時に、現在の時刻と保存された時刻を比較できます。差分が「x」より大きい場合は、ユーザーをログイン画面に誘導できます。メイン アクティビティの onPause、onResume、onStop、onDestroy イベントに注意してください。個人的には、タイムスタンプに System.currentTimeMillis を使用し、ミリ秒を比較して、時間 (秒、分など) に基づいて適切に分割します。

于 2012-07-15T22:18:49.040 に答える