アクティビティとフラグメントの違いは何ですか?


80

私の調査によると、バックスタックの概念とその存在方法には大きな違いがあります。

アクティビティ

  • ときactivityに配置されるbackstackactivitiesユーザだけ押すことにより、前のアクティビティに戻ってナビゲートすることができるback ボタン。

  • Activity 独立して存在することができます。

断片

  • fragmentアクティビティにが配置されたら、のaddToBackstack()間に呼び出すことによってインスタンスを保存するように要求する必要がありますfragment transaction

  • Fragment 中に住んでいる必要があります activity

追加の違いはありますか?


8
フラグメントはマニフェストで宣言する必要はありません。ネストされたフラグメントがありますが、ネストされたアクティビティを持つことはできません
hoomi

回答:


52

これらは2つのまったく異なるものです。

アクティビティは、ユーザーが何かをするために対話できる画面を提供するアプリケーションコンポーネントです。詳細:http//developer.android.com/guide/components/activities.html

一方、フラグメントは、アクティビティの動作またはユーザーインターフェイスの一部を表します。 http://developer.android.com/guide/components/fragments.html


38

アクティビティとフラグメントの主な違い

  1. アクティビティは、ユーザーが対話できるユーザーインターフェイスを提供するアプリケーションコンポーネントです。フラグメントはアクティビティの一部であり、そのアクティビティに独自のUIを提供します。
  2. タブレットの場合、またはモバイルが横向きの場合、フラグメントを使用すると、状態名を表示するための唯一のリストのように2つのリストを表示でき、他のリストは単一のアクティビティで状態の説明を表示しますが、アクティビティを使用して同じことを行うことはできません。
  3. アクティビティはフラグメントに依存しませんが、フラグメントはアクティビティに依存しているため、独立して存在することはできません。
  4. アクティビティでフラグメントを使用しないと、マルチペインUIを作成できません。ただし、1つのアクティビティで複数のフラグメントを使用すると、マルチペインUIを作成できます。
  5. アクティビティのみを使用してプロジェクトを作成する場合、管理は困難ですが、フラグメントを使用する場合、プロジェクト構造は良好であり、簡単に処理できます。
  6. アクティビティには、0個または複数のフラグメントが含まれる場合があります。フラグメントは複数のアクティビティで再利用できるため、アクティビティで再利用可能なコンポーネントのように機能します。
  7. アクティビティには独自のライフサイクルがありますが、フラグメントには独自のライフサイクルがあります。
  8. アクティビティについては、マニフェストで言及する必要がありますが、フラグメントについては必要ありません。
  9. 多くのメモリが使用され、フラグメントはメモリを使用していません。
  10. 活動は軽い体重ではありません。フラグメントはライトウェイトです。

いい説明。
Abhishekkumar19年

誰かが#10について詳しく説明できますか?アクティビティと比較してフラグメントが軽量になる理由は何ですか?
dazzieta

#7は意味をなさない: - \
t3chb0t

23

android開発者のドキュメントによると、ライフサイクルにおけるフラグメントとアクティビティの違い。

ドキュメントリンクhttp://developer.android.com/guide/components/fragments.html#Lifecycle

アクティビティとフラグメントのライフサイクルにおける最も重要な違いは、それぞれのバックスタックにどのように格納されるかです。アクティビティは、デフォルトで、停止時にシステムによって管理されるアクティビティのバックスタックに配置されます(タスクとバックスタックで説明されているように、ユーザーが[戻る]ボタンでそのアクティビティに戻ることができるようにするため)。ただし、フラグメントは、フラグメントを削除するトランザクション中にaddToBackStack()を呼び出してインスタンスの保存を明示的に要求した場合にのみ、ホストアクティビティによって管理されるバックスタックに配置されます。

それ以外の点では、フラグメントのライフサイクルの管理は、アクティビティのライフサイクルの管理と非常に似ています。したがって、アクティビティのライフサイクルを管理するための同じ方法がフラグメントにも適用されます。ただし、アクティビティの寿命がフラグメントの寿命にどのように影響するかについても理解する必要があります。

&マルチペインレイアウトの場合は、fragmentでは実現できないものを使用する必要がありますactivity


20

アクティビティは、ユーザーが対話できるアプリケーションのUIであり、フラグメントはアクティビティの一部であり、アクティビティライフサイクルと並行して実行される独自のライフサイクルを持つアクティビティ内のサブアクティビティです。

Activity LifeCycle                           Fragment LifeCycle
onCreate()                                     onAttach()
    |                                              |
onStart()______onRestart()                     onCreate()
    |             |                                |
onResume()        |                            onCreateView()
    |             |                                |
onPause()         |                            onActivityCreated()
    |             |                                |
onStop()__________|                             onStart()
    |                                              |
onDestroy()                                    onResume()
                                                   |
                                                onPause()
                                                   |
                                                onStop()
                                                   |
                                              onDestroyView()
                                                   |
                                               onDestroy()
                                                   |
                                               onDetach()

5

アクティビティ
1.アクティビティは、Androidプラットフォーム上のアプリの基本的な構成要素の1つです。これらは、ユーザーがアプリを操作するためのエントリポイントとして機能し、ユーザーがアプリ内またはアプリ間を移動する方法の中心でもあります
。2。ライフサイクルメソッドはOSによってホストされます。
3.活動のライフサイクル

フラグメント
1.フラグメントは、アクティビティ内の動作またはユーザーインターフェイスの一部を表します。1つのアクティビティで複数のフラグメントを組み合わせてマルチペインUIを構築し、複数のアクティビティでフラグメントを再利用できます。フラグメントは、独自のライフサイクルを持ち、独自の入力イベントを受け取り、アクティビティの実行中に追加または削除できるアクティビティのモジュラーセクションと考えることができます。
2.ライフサイクルメソッドは、ホスティングアクティビティによってホストされます。
3.フラグメントのライフサイクル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.