1

パスワードを使ってユーザーのようにログインしなければならないアプリケーションがあります。

このアプリケーションは安全である必要があるため、ユーザーが一定期間(たとえば、5分)画面を押していない場合は、ユーザーをログアウトする必要があります。

問題は、ユーザーがログインすると、1つだけでなく、多くのアクティビティを実行できることです。Androidに、ユーザーが数分後にログアウトできるかどうかを知る方法があるかどうかを知りたいと思います。

onInterceptTouchEvent(MotionEvent ev)メソッドを使用することを考えていましたが、問題は、¿すべてのアクティビティでこのメソッドを使用する必要があるということです。¿Androidでそれを管理する別の簡単な方法はありますか?

どうもありがとう!

4

2 に答える 2

1

これをすべてに実装する代わりに、次のようActivityに作成できますActivity

public class BaseActivity extends Activity

に実装onInterceptTouchEventしますBaseActivity

次に、他のすべてActivitiesから拡張する必要がありますBaseActivity

更新:onTouch画面全体でイベントをリッスンする場合 は、を使用する必要があります。これには、のすべてのxmlファイルで、xmlのルートビュー(、、など)にを指定Activityする必要があります。したがって、他の人から入力を取得できるようにするには、次のようにルートビューを渡す必要があります。idLinearlayoutRelativelayoutFramelayoutBaseActivityActivities

public class MyActivity extends BaseActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        super.setRootView(findViewById(R.id.rootView));
    }
}

public class BaseActivity extends Activity implements OnTouchListener{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void setRootView(View rootView){
        rootView.setOnTouchListener(this);
    }

    public boolean onTouch(View v, MotionEvent event) {
        Log.d("BaseActivity", "onTouch!");
        return super.onTouchEvent(event);
    }
}
于 2012-10-31T13:08:56.520 に答える
1

1.System.currentTimeMillis()これを実現する 1 つの方法は、ユーザーがアプリケーションにログインするときに ( を使用して) 現在時刻を取得することです。これを variable に保存しましょうt1

2.以下を監視/チェック/実行するサービスを開始します。

2a. ユーザーがアクティビティに触れるたびに、値t1を現在の時刻に設定します。

2b. 継続的に現在の時刻を取得し ( )、とt2の間の時間経過を計算します(すなわち)。このタイムラプスが 5 分以上の場合、関数を呼び出すことができます。t1t2t2 - t1logOut()

はい、すべてのアクティビティから、ユーザーが存在することをバックグラウンド サービスに通知する必要があります。ただし、 Carnalが提供するソリューションは、これを達成するための労力を軽減するのに大いに役立ちます。

于 2012-10-31T13:08:46.093 に答える