2012-10-31 2 views
1

비밀번호가있는 사용자처럼 로그인해야하는 곳이 있습니다.세션 사용자 관리 android

이 응용 프로그램은 보안이 필요하므로 일정 시간 (예 : 5 분) 동안 화면을 움직이지 않으면 사용자를 로그 아웃해야합니다.

일단 사용자가 로그인하면 그는 하나뿐 아니라 여러 가지 활동을 수행 할 수 있으며 사용자가 로그 아웃 할 수 있는지 안드로이드에서 알 수있는 방법이 있는지 알고 싶습니다. 몇 분.

onInterceptTouchEvent (MotionEvent ev) 메서드를 사용하려고 생각했지만 문제는 모든 작업에서이 메서드를 사용해야한다는 것입니다. 안드로이드에서 관리하는 또 다른 쉬운 방법이 있습니까?

고맙습니다.

답변

1

대신 모든 Activity에서이를 구현, 당신은 이런 일 Activity을 만들 수 있습니다

public class BaseActivity extends Activity 

하고 BaseActivityonInterceptTouchEvent를 구현합니다.

그리고 다른 모든 Activities 당신이 BaseActivity

UPDATE 확장해야합니다 : 당신은 화면 전체에서 이벤트를 수신하려는 경우가 onTouch을 사용해야합니다 을. 이렇게하려면 Activity의 모든 xml 파일에서 xml (Linearlayout, Relativelayout, Framelayout 또는 기타)의 루트보기에 id을 부여해야합니다.

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); 
    } 
} 
+0

이것은 내 문제를 해결하기위한 가능한 해결책 일 수 있습니다!나는 그것을 시도 할 것이고, 그것이 효과가 있었다면 당신의 코멘트에 "유용"을 넣을 것이다! 고마워요 !! – zapotec

+0

좋아, 친구, 행운을 빌어 요! – Carnal

+0

좋아, 이해 했어 ......하지만 이제 문제가 생겼어. ¿ "onInterceptTouchEvent"메서드는 어떻게 사용할 수 있습니까? 내가 확인하고 있었고, 그것은 "ViewGroup"에서 메서드입니다 (그래서, LinearLayout, RelativeLayout 등에서 의미 ....하지만 내 BaseActivity 어떤 alyout 없어 !! 어떻게 그것을 사용할 수 있습니까 ??? 모든 자습서 – zapotec

1

사용자가 응용 프로그램에 로그인 할 때 현재 시간 (System.currentTimeMillis() 사용)을 얻는 한 가지 방법이 있습니다. 이것을 변수 t1에 저장하겠습니다.

2A를 :

2

것들을 아래에/실행/모니터를 확인하는 서비스를 시작합니다. 사용자가 귀하의 활동 중 하나를 건드릴 때마다 t1의 값을 현재 시간으로 설정하십시오.

2b.은 현재 시간 (t2)을 연속적으로 가져와 t1t2 사이의 경과 시간 (즉, t2 - t1)을 계산합니다. 이 경과 시간이 5 분 이상이라면 logOut() 기능을 호출 할 수 있습니다.

예, 모든 활동에서 사용자가 있다는 것을 백그라운드 서비스에 알릴 필요가 있습니다. Carnal에 의해 제공되는 솔루션은이를 달성하기위한 노력을 줄이는 데 큰 도움이됩니다.

+0

감사 : 그래서 순서대로 BaseActivity이 같은 그것에 루트보기를 통과해야합니다 다른 Activities에서 입력을받을을 수 있도록! Carnal과 당신의 두 가지 해결책을 통해 나는 그것을 할 수 있다고 생각합니다! 고마워요 !! – zapotec