美しくログアウトする方法
えーと、何が言いたいのかというと、ログアウトしたあとは、だいたいトップ画面とかログイン画面とかに遷移させると思うんです。
で、そのときに戻るボタン押した時にログアウトボタンがある画面に戻っちゃうとかっちょ悪いよね、という話。
Activityの流れとしては以下のような流れ
ログアウトボタンがあるActivity→SignOutActivity→TopActivity
ログアウトボタンがあるActivity
※僕の場合、ここはPreferenceActivityなんだけど、これは別でまとめようと思うのでスルー。
普通にSignOutActivityに向けてstartActivityするだけ
SignOutActivity
このテストが通るように書きなちゃい!
public class SignOutActivityTest { @Test public void testOnCreate() throws Exception { SignOutActivity activity = new SignOutActivity(); TestUtil.createSession(activity); activity.onCreate(null); assertThat(SessionHandler.isSessionExist(activity), is(false)); ShadowActivity shadowActivity = Robolectric.shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); ShadowIntent shadowIntent = Robolectric.shadowOf(startedIntent); assertThat(shadowIntent.getFlags(), is(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)); Assert.assertThat(shadowIntent.getComponent().getClassName(), equalTo(TopActivity.class.getName())); assertThat(shadowActivity.isFinishing(), is(true)); } }
ちなみにTestUtil.createSession(activity);は、お手製のユーザー名とか入ったPreferenceを仕込むテスト用のやつで、SessionHandler.isSessionExist(activity)は、お手製のユーザー名とか入ったPreferenceが消えてなくなってるか確認するだけのやつ。
TopActivity
@Override public void onBackPressed() { moveTaskToBack(true); }
最後のがあんまよくわかってないんだけど、眠いからもういいや。。。活動限界です!!