0

私のアプリケーションでは、パスワード画面を実装しましたが、アクティビティAまたはアクティビティBを表示するかどうかを確認する必要があります。このチェックは明らかに共有設定の結果ですアプリケーションを開くときに目立った遅れがあります - コードは下に表示されていますが、これを最適化して遅れずにすばやく開く方法を教えてください。UIスレッドの共有設定を読み込みます

ランチャー活性

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

    boolean loggedIn = PreferenceUtils.getBoolean(LauncherActivity.this, PreferenceUtils.LOGGED_IN_STATE); 
    boolean passwordEnabled = PreferenceUtils.getBoolean(LauncherActivity.this, PreferenceUtils.APPLICATION_PASSWORD_ENABLED); 

    Log.d(TAG, "LOGGED IN: " + loggedIn + " " + "PW: " + passwordEnabled); 
    if (!loggedIn) { 
     // Start Login Activity 
     Intent intent = new Intent(LauncherActivity.this, ApplicationIntro.class); 
     startActivity(intent); 

     //PreferenceUtils.clearPreferences(LauncherActivity.this); 
    } else { 
     if (passwordEnabled) { 
      // Start Password Activity 
      Intent intent = new Intent(LauncherActivity.this, PasswordActivity.class); 
      startActivity(intent); 
     } else { 
      // Start Main Activity 
      Intent intent = new Intent(LauncherActivity.this, MainActivity.class); 
      startActivity(intent); 
     } 
    } 

    finish(); 
} 

パスワードアクティビティ

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_password); 

    setupActionBar(); 

    setupPreferences(); 
    findViews(); 
    setupValues(); 
    setListeners(); 

} 

... 

private void setupPreferences() { 
    attemptsRemaining = PreferenceUtils.getInt(PasswordActivity.this, PreferenceUtils.APPLICATION_PASSWORD_ATTEMPTS); 
    storedPassword = PreferenceUtils.getString(PasswordActivity.this, PreferenceUtils.APPLICATION_PASSWORD); 
    duressPassword = PreferenceUtils.getString(PasswordActivity.this, PreferenceUtils.DURESS_PASSWORD); 
} 

好ましいUtilsの

public static void saveString(Context context, String key, String value) { 
    SharedPreferences preferences = new SecurePreferences(context); 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString(key, value); 
    editor.apply(); 
} 

public static String getString(Context context, String key) { 
    SharedPreferences preferences = new SecurePreferences(context); 
    return preferences.getString(key, ""); 
} 

public static void saveBoolean(Context context, String key, boolean value) { 
    SharedPreferences preferences = new SecurePreferences(context); 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putBoolean(key, value); 
    editor.apply(); 
} 

public static boolean getBoolean(Context context, String key) { 
    SharedPreferences preferences = new SecurePreferences(context); 
    return preferences.getBoolean(key, false); 
} 

答えて

1

T彼はCheckがUIスレッドをブロックしているので、アプリが遅れるのです。スレッドのバックグラウンドでlagyプロセスを実行する良い練習はAsyncTaskhere is a link to AsyncTask documentationを使用しています。 お気軽に詳しい質問をしてください。

+0

お返事ありがとうございます。あなたはこれをすることを提案する方法のいくつかのコードを提供することができますか?以前はAsyncTaskを使ってこれらの値をロードしていましたが、パスワードのアクティビティでは、ユーザーは実際にonPostExecuteの結果として更新中のコンテンツを見ることができます。したがって、これをアドバイスする方法についていくつかのコードを提案できれば、それは素晴らしいだろう - ありがとう。また、LauncherアクティビティのonCreateは、そのファイル内に唯一のコードで、PasswordActivityにはビューがあります(ユーザーがパスワードとTextViewを入力するためのEditText) –

+0

app.whenアプリケーションの流れどのアクティビティが最初に起動し、その後に起動します! –

+0

ランチャーアクティビティ>共有プリファレンスを使用してイントロアクティビティまたはパスワードアクティビティを表示するかどうかを確認する>パスワードアクティビティ>共有プリファレンスが保存されたパスワードを取得してユーザーの入力をチェックする –

関連する問題