前回の記事における HogeActivity の内容を以下に変更する。(LoginActivityにもnohistory属性を付加)
- package com.dev_grafr.app.logintest;
- import android.app.Activity;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class HogeActivity extends Activity {
- public static final String PREFERENCES_FILE_NAME = "preference";
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.hoge);
- ((Button) findViewById(R.id.logoutBtn)).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- logout();
- Intent broadcastIntent = new Intent();
- broadcastIntent.setAction("com.dev_grafr.app.logintest.LOGOUT");
- sendBroadcast(broadcastIntent);
- Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
- startActivity(intent);
- }
- });
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction("com.dev_grafr.app.logintest.LOGOUT");
- registerReceiver(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- finish();
- }
- }, intentFilter);
- }
- // ログアウト処理
- public void logout(){
- SharedPreferences settings = getSharedPreferences(PREFERENCES_FILE_NAME, 0); // 0 -> MODE_PRIVATE
- SharedPreferences.Editor editor = settings.edit();
- editor.putLong("logged-in", 0);
- editor.commit();
- }
- }
これでOK
つまり, ログアウトしましたよ〜。というメッセージをスタック内の Activity に対して BroadCast してあげれば良い。
この BroadCast を受け取ったアクティビティは, 自分自身をfinishする。これで一度にスタックからアクティビティを除去できるわけである。
どうでしょう?なにか他にも ログイン & ログアウト処理 の実装方法があれば, 教えてくださると嬉しいです。
0 コメント:
コメントを投稿