finishする瞬間に他のアプリが一瞬表示されてしまう
- ランチャーアクティビティからAccountManager経由で独自AccountAuthenticatorActivityを起動
- 独自AccountAuthenticatorActivityでバックボタンが押されたら、認証をキャンセル
- AccountManagerのコールバックでfutureがキャンセルされていたら、ランチャーアクティビティをfinish
- アクティビティが消えるトランジションの後、一瞬 (それまでに起動していた) アプリの画面が表示される
という症状です。
AndroidManifest.xml
<activity
android:name=".activity.LaunchActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
バックボタンが押された時のコールバック: 認証をキャンセルする
public class LoginActivity extends AccountAuthenticatorActivity {
@Override
public void onBackPressed() {
setAccountAuthenticatorResult(null);
setResult(RESULT_CANCELED);
finish();
}
}
AccountManagerのコールバック内でキャンセルを処理
mAccountManager.getAuthTokenByFeatures(mAccountType, mAuthTokenType, null, activity, null, null,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
Bundle bundle;
try {
if (future.isCancelled()) {
eventBus.post(new LoginFailedEvent(true));
return;
}
ランチャーアクティビティをfinish()
public class LaunchActivity extends BaseActivity {
// EventBus経由で受け取る
public void onEventMainThread(LoginFailedEvent event) {
if (event.isCancelled()) {
finish();
}
終了の仕方がおかしいなどあるでしょうか。