startActivity(intent)
使用すると使用する の違いを教えてくださいsetContentView(R.Layout.main)
。
使用するアクションを実行したいとき、使用startActivity(intent)
する別のページに移動するだけだと思いますsetContentView(R.Layout.main)
3 に答える
startActivity を使用する場合、新しい Activity の onCreate で contentView() も設定します。したがって、時間に関しては、新しいアクティビティを開始しないため、setContentView だけの方が高速です。したがって、アプリは新しい画面をより速く表示します...
一方、startActivity を呼び出すと、このアクティビティがスタックに積まれるので、戻るボタンを押して戻ることができます。setContentView を使用すると、戻るボタンを手動で構成して以前のレイアウトに戻る必要があります...
アプリケーションの種類に応じて、どちらが最適かを判断する必要があります。たとえば、chrome-to-phone ソース コードでは、Google がアプリの完全なセットアップ フェーズに setContentView を使用していることを示しています。より高速で、画面の下部に戻るボタンを配置しました。物理的な戻るボタンを押すと、アクティビティが停止します。このアプローチを使用して、複数の画面で 1 つのアクティビティを使用して、セットアップを完了するために必要なすべての情報を収集します。
セットアップが完了すると、Google は startActivity メソッドに切り替えて、さまざまなアクションを実行します。ここで、アプリは、ユーザーが実行できるさまざまなタスクに対してさまざまなアクティビティを使用します。各アクティビティは一種のスタンドアロン アクティビティであり、[戻る] ボタンを使用してそれらをすばやく切り替えることができます。
これがあなたを正しい方向に向けることを願っています
startActivity(intent)は、名前が示すように、新しいアクティビティを開始します。setContentView(xml);
これで、そのアクティビティはxmlレイアウトをそのアクティビティに設定するために使用されます。ここで問題となるのは、最初のアクティビティがどのように開始されるかです。これは、最初のアクティビティに対してstartActivity(intent)を呼び出さないためです。
これに対する答えはマニフェストファイルにあります。マニフェストのLauncherアクティビティが最初に呼び出され、それぞれのjaveファイルで指定されているようにレイアウトビューが設定されますsetContentView(R.layout.main);
それらは非常に異なりますが、あなたの質問に基づいて、私はあなたがそれらの両方で同じことを達成しようとしていると仮定し、それは可能だと思われます. ただし、考慮すべきことはsetContentView(R.Layout.main
、前後に移動した場合にその contentView に設定されていた以前のリスナーの登録を解除することですstartActivity(intent)
。リスナーがアクティブで、インタラクティブなエクスペリエンスが必要な場合は、より優先されます。あなたが何をしようとしているのかに応じて、他のより良いアプローチがあります。