使其看起来好像在实施EULA时只启动了一项活动

时间:2014-08-29 08:56:28

标签: android sharedpreferences eula

我试图在我的应用中实施一次性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 - >密码创建 - >推出/其他活动
  • (不要显示)推出的活动 - >验证屏幕 - >推出/其他活动
  • lauched activity

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

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

无论如何,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以看一下Fragments的概念。 我们的想法是将您的活动的UI拆分为可重用的碎片,这些碎片可以在运行时互换。

因此,在onCreate方法中,您可以检查是否需要EULA屏幕,然后对相应的EULA片段进行充气,或者在另一种情况下显示密码ui Fragment。 这应该通过避免开始新的活动而有利于重用活动的活动来减少闪烁。