2017-01-29 6 views
0

私は多くを検索しましたが、私の答えは見つかりませんでした。私は非常に最初のランチのユーザーには、ビューページからなるようこそ画面が表示されるアンドロイドアプリケーションを開発しました。問題は、アプリケーションにウェルカムアクティビティコードを配置するのが最適な場所がわからないことです。それができるウェルカムアクティビティコードを入れる場所

最も簡単な方法は、非常に拳ラインでの主な活動でさえ、私は共有プリファレンス値を取得し、それは拳の昼食であるかどうかを評価しようとするのonCreateメソッド内super.onCreate()、前。そうであれば、私は以下のようにウェルカム活動を開始します。

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true); 
     if (welcome) { 
      // go and start welcoming activity 
      Intent intent = new Intent(this, WelcomeSlideActivity.class); 
      startActivity(intent); 
     } 


     super.onCreate(); 
    } 
} 

しかし、私はそれに対処する別のアプローチを見つけました。アプリケーションクラスです。 Applicationクラスは最初のものなので、アプリケーション内の他のコードよりも前に実行されます。だから私は、だから私は1つが選択するための最良の選択肢であると思われる、ジレンマに陥っています

public class App extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true); 
     if (welcome) { 
      // go and start welcoming activity 
      Intent intent = new Intent(this, WelcomeSlideActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     } 
    } 
} 

以下のように私はそこにそれを行うにはいいだろう、と思いました。アンドロイドデベロッパーのウェブサイトやどこにでもそのようなドキュメンテーションがないので、正しい方法でそれをやっているのかどうかはわかりません。

+0

初めてアプリを起動した後にWelcomeSlideActivityを1回だけ表示しますか? – Yupi

+0

はい、私はそれをやりたいのですが、プロフェッショナルなアプリとして最善の方法で行っています – xFighter

+0

私は、単純に 'if'checkingで' SharedPreferences'を使って私のアプリでダイアログをポップアップ表示するのにそれを使用しました。もちろん、ユーザーがアプリケーションを再インストールした場合、ウェルカムダイアログが再び表示されます。 – Yupi

答えて

2

正しい方法でスプラッシュスクリーンを作成する方法を見てください。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/

Applicationクラスを使用しています - これは主に、アプリケーション全体の構成でグローバルなアプリケーション状態を維持するために使用されます。したがって、ここからのアクティビティの開始はあまり意味がありません。その目的は、アプリケーション全体の状態を提供するのではなく、アプリケーションのエントリポイントになるように変更されたためです。

さらに、WelcomeSlideActivityを最初の「ランチャー」アクティビティにしないでください。次に、履歴なしで次のアクティビティを起動するかどうか、または現在のビューを表示するかどうかのロジックを作成できます。

WelcomeSlideActivityまたはMainActivityを表示するかどうかを決定するスプラッシュ画面アクティビティを作成するのが理想的です。これは、アプリが起動するアクティビティを決定する間に、ユーザにアプリが起動したことを知らせるスプラッシュ画面が表示されるということです。

+0

私はランチャー活動としてそのwelcomeSlideActivityを作ったとしましょう。初めてのアクティビティでは歓迎すべきことが示されますが、各起動時には何もしないで次のアクティビティに移動してメモリを無駄にしたりパフォーマンスを低下させたりすることはありません。それで、あなたはどう思いますか? – xFighter

+0

@xFighterスライド式ウェルカムスクリーンの開発を選択し、昼食を取るごとにそれを表示するように心がけている場合、標準的な振る舞いは最初のランチにのみ表示されます。 SharedPreferenceにフラグを立てるだけで済むので、実装するのは簡単です。 – fluffyBatman

+0

@blackpantherあなたが与えたリンクは役に立ちましたが、何もしなくても同じことができます。私は、次のコードsetTheme(R.style.SplashAppTheme)によってマニフェストと主なアクティビティでテーマといくつかの設定が必要です。 – xFighter

関連する問題