【问题标题】:Only one instance of entire app multiple activities整个应用程序只有一个实例多个活动
【发布时间】:2014-05-18 17:40:52
【问题描述】:

我有一个包含 3 个活动的 Android 应用。我基本上想要一个包含所有三个活动的实例。

因此,对于活动 A、B 和 C,我只希望用户一次能够查看其中一个。我不想要任何这些活动的多个实例。我已经尝试过android:launchMode="singleTask",这在某种程度上是可行的,但是当用户返回应用程序时,它总是首先再次启动 Activity A,而不是转到用户按下主页按钮的 Activity B。

将这些活动托管的所有 Fragment 移到一个活动中并取消活动 B 和 C 对我来说最好吗? Activity A 仅托管一个片段,即登录/注册页面。

使用singleTask launch mode 是否还需要在开始其他活动时添加Intent 标志?

【问题讨论】:

    标签: android android-fragments android-activity single-instance


    【解决方案1】:

    所以对于活动 A、B 和 C,我只希望用户能够 一次只看其中一个。

    您当时只能有一个Activity 处于焦点位置。另一个Activity 可能在您的Activity 后面可见(即最上面的Activity 可能以Dialog 为主题),但只有一个Activity 具有焦点;因此用户一次只能与一个Activity 进行交互。

    它总是先再次启动 Activity A 而不是转到 Activity 乙

    Android 将始终首先启动标记为的Activity

     <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
    

    在 AndroidManifest.xml 中。您可以添加逻辑来创建此Activity 未被调用的错觉,然后向相应的Intent 启动。

    我最好只是移动所有托管的片段 这些活动合并为一项活动并取消活动 B 和 C?

    这完全取决于您。在我看来,使用Fragments 可能感觉更合适,因为您可以根据逻辑条件(即是否登录)轻松替换它们,而无需创建新的Activity(对用户来说似乎更无缝) .

    【讨论】:

      【解决方案2】:

      您应该使用 ViewPager 使用三个片段,而不是使用三个 activitiew。

      【讨论】:

      • 有些库可以简化单个活动中多个片段的使用。如果您需要帮助..我可以向您推荐 Library ViewPagers..以及如何使用它们的示例代码
      猜你喜欢
      • 1970-01-01
      • 2018-08-31
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2023-03-20
      相关资源
      最近更新 更多