2016-12-27 27 views
0

いくつかの例を見てきましたが、私が間違っていることを理解できません。Androidの自動ログアウトユーザー

Auto logout after 15 minutes due to inactivity in android

その例を見た後、私はサービスを拡張LogoutServiceクラスを作成しました。また、私はまだ私のログイン活動を呼び出す意思を持っている必要がありますか?このような何か:

Intent intent = new Intent(getBaseContext(), LoginActivity.class); 
startActivity(intent); 

マイLogoutServiceクラス

public class LogoutService extends Service { 
public static CountDownTimer timer; 
private final String TAG="Service"; 
    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
     timer = new CountDownTimer(1 * 60 * 1000, 1000) { 
      public void onTick(long millisUntilFinished) { 
       //Some code 
       Log.v(TAG, "Service Started"); 
      } 

      public void onFinish() { 
       Log.v(TAG, "Call Logout by Service"); 
       // TODO should I create an Intent 
       // my Login method here? 
       stopSelf(); 
      } 
     }; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

そして、すべて私の他のクラスでこれを置く:

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    try { 
     LogoutService.timer.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onStop(); 
    LogoutService.timer.cancel(); 
} 

しかし、私は LogoutServiceによるnullポインタ例外を取得しておきます。 timer.cancel();

私はそれがヌルであるかどうかをチェックするif文で囲みましたが、何も起こらず、何をすべきかわかりません。

答えて

0

LogoutService.timer.cancel()のためにNULLポインタ例外が発生しました。 LogoutServiceServiceクラスを拡張しますが

のでそうonCreateメソッドが呼び出されていないstartServiceメソッドを使用してそれを起動し、timernullではありません。

  1. スタート/ストップサービスをstartServicestopService方法

  2. を使用してサービスのonDestory()にタイマーを取り消す:

    は、次の操作を実行します。

  3. は、スタート/ストップ方法が行くべきAndroidManifest.xml

+0

にサービスとしてLogoutServiceクラスを追加しますか? LogoutServiceクラスでは? また、なぜonDestroyではなくonDestroyですか? – Spider

+0

@Spider: 'LogoutService.timer.start();'と 'LogoutService.timer.cancel();'の代わりに –

+0

それが何をするのか分かりません。だから、このような新しいメソッドを作成して呼び出すだけですか? public void startService(){ Logout.timer.start(); } – Spider

関連する問題