0

我正在尝试在我的应用程序中实现一次性 EULA 和密码创建屏幕。

我努力做到这一点尽可能干净和无缝。我当前的实现涉及需要设置的 SharedPreference,如果不是,它应该显示 EULA 和密码创建屏幕。

/**
 * 
 * @param context
 * @return
 */
public static boolean isFirstLaunch(Context context) {
    SharedPreferences reader = context.getSharedPreferences(
            PREFERENCES, Context.MODE_PRIVATE);
    String apiKey = reader.getString(APIKEY, "");

    return apiKey == "";
}

当用户完成接受 EULA 并创建密码时,将设置 API 密钥。但是,我看到之前的活动仍在启动/动画中。所以我一直在尝试删除第一个活动的动画,但到目前为止还没有运气。

在活动中:

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);

    if (InitialLoading.isFirstLaunch(this)) {
        Intent intent = new Intent(this, EndUserAgreementActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intent);
        //getWindow().setWindowAnimations(0);
        overridePendingTransition(0,0);
        finish();

        return;
    }

    if (InitialLoading.isPasswordLoginEnabled(this)) {



    }

    Intent intent = new Intent(this, OverviewActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NO_ANIMATION);
    startActivity(intent);
    finish();
}

你们知道我怎样才能让它看起来好像在所有场景中只启动了一项活动:

  • (不显示)已启动的活动 -> EULA -> 密码创建 -> 已启动/其他活动
  • (不显示)已启动的活动 -> 身份验证屏幕 -> 已启动/其他活动
  • 发起活动

目前,当我尝试启动 EULA 时,我仍然看到之前的活动闪烁。我检查了 Whatsapp 并且该应用程序在启动非 EULA 活动时确实显示闪烁,所以我想知道这是否可能。

我已经有一个设置屏幕,如果身份验证选项保持启用状态,密码屏幕将禁用该屏幕,所以不用担心。

无论如何,感谢您的帮助。

4

1 回答 1

1

您可能会看到Fragments的概念。这个想法是将您的活动的 UI 拆分为可在运行时互换的可重用片段。

因此,在您的onCreate方法中,您可以检查是否需要 EULA 屏幕,然后为相应的 EULA Fragment 充气,或者在其他情况下显示密码 ui Fragment。这应该通过避免开始一项新的活动来重用活动的活动来减少闪烁。

于 2014-08-29T09:06:12.630 回答