私はアンドロイドアプリを開発しています。私は30分間私のアプリに触れないで(InActive)、自動的にログアウトします。私はアクティビティと両方のファイルを断片化しています。私はこれを行うことができるコードを親切に許してください。そして、どのアクティビティや断片を実装する必要があるかを明確にしてください。本当に感謝しています。できるだけ早く返信してください。Androidアプリが30分間触れられていない(非アクティブな)場合、自動的にログアウトする方法はありますか?
答えて
あなたは上記の30分後にログアウトのためであるHandler
public class MainActivity extends AppCompatActivity{
private Handler refreshHandler;
private Runnable runnable;
@Override
public void onCreate(Bundle savedInstanceState) {
refreshHandler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
// logout
}
};
refreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);
}
@Override
public void onUserInteraction() {
super.onUserInteraction();
refreshHandler.removeCallbacksAndMessages(null);
refreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);
}
}
でこれを達成することができます。今すぐあなたはTouchEvents
またはユーザーがアクティブであることを確認したい何かを聞く必要があります。ユーザーがアクティブな場合は、実行を待っているRunnable
を削除します。
refreshHandler.removeCallbacksAndMessages(null);
そして、これと
あなたは再びrefreshHandler.postDelayed(runnable, DateUtils.MINUTE_IN_MILLIS * 30);
それを解決するために、より良く、よりエレガントな方法が常にあり、それを開始するが、これは速いアプローチになります。
編集:私は、キー、タッチ、またはトラックボールイベントが活動に派遣されたときに呼び出されonUserInteraction()
を経由してオプションを追加しました。アクティビティの実行中にユーザーが何らかの方法でデバイスとやりとりしたことを知りたい場合は、このメソッドを実装します。このコールバックとonUserLeaveHint()は、アクティビティがステータスバーの通知をインテリジェントに管理するのを支援するためのものです。具体的には、アクティビティが通知をキャンセルするための適切な時間を決定するのを助けるためのものである。
アクティビティのonUserLeaveHint()コールバックのすべての呼び出しには、onUserInteraction()の呼び出しが伴います。これにより、通知ペインをプルダウンしてアイテムをタッチするなど、関連するユーザーのアクティビティについてアクティビティに確実に通知されます。
このコールバックは、タッチジェスチャーを開始するタッチダウンアクションに対して呼び出されますが、それに続くタッチ移動アクションおよびタッチアップアクションでは呼び出されないことに注意してください。
質問の全体のポイントは、非アクティブを検出する方法でした。 –
@DmitryRyadnenkoああそうだ。 1秒 –
@DmitryRyadnenko例を追加 –
は、最初の30分間の実行スレッドを作成します。その後、タッチイベントが発生した場合、フラグメントとアクティビティの両方でユーザーのiteractionを確認し、進行中のスレッドをキャンセルして新しいスレッドを作成してもう一度チェックします。 –
あなたのログインステータスをsharedpreferenceに保存して、30分以内にalaramサービスを実行してください。コードを通じてアプリデータを消去します。それはあなたのアプリをリセットするでしょう – HourGlass
@HourGlass ....私は30分のログイン後にログアウトしたい、私は30分のユーザーとの対話の後にログアウトするアプリと対話したい。 –