【问题标题】:Android life cycle and home buttonAndroid 生命周期和主页按钮
【发布时间】:2014-01-04 12:30:19
【问题描述】:

我有两个活动的简单 android 应用程序:

  • 第一个主要活动包含带有标签导航的 ViewPager(3 个标签,每个标签一个片段)。其中一个片段是 ListFragment,它是一本通讯录(图像和文本)。

  • 第二个活动代表联系方式。

当用户单击 listview 联系人行时,第二个活动将使用联系人详细信息启动。此活动的后退按钮工作正常,单击后立即恢复主要活动。但是我的主页按钮(操作栏中的向上按钮)有问题。当它被点击时,主要活动不会恢复而是再次创建,它会消耗大量时间(甚至 800 毫秒)。

带有主页按钮片段的清单卡活动配置:

<activity
     android:name="com.sampleapp.activity.CardActivity"
     android:label="@string/title_activity_card"
     android:parentActivityName="com.sampleapp.activity.MainActivity">
     <!-- Parent activity meta-data to support API level 7+ -->
     <meta-data
          android:name="android.support.PARENT_ACTIVITY"
          android:value="com.sampleapp.activity.MainActivity" />
</activity>

当主页按钮出现时,有什么方法可以从堆栈中恢复主要活动(如果有的话)?

【问题讨论】:

  • 你如何回到主要活动?你在用NavUtils. navigateUpFromSameTask()吗?还是其他方法?

标签: android android-fragments android-activity android-lifecycle


【解决方案1】:

试试这个它可以帮助你在前面获得活动

Intent i = new Intent(this,YourActivityName.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

【讨论】:

  • 其实这可能不是你想要的。除非您完成当前活动,否则这只会将主要活动移动到前台,从而将当前活动置于其下方。这意味着在您的主要活动上按下 BCK 按钮现在将显示您刚刚离开的活动。
【解决方案2】:

FLAG_ACTIVITY_CLEAR_TASK 标志的行为可能会比接受答案的标志更好:

Intent i = new Intent(this,YourActivityName.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);

来自文档:

如果在传递给 Context.startActivity() 的 Intent 中设置,此标志将 导致与活动相关联的任何现有任务 在活动开始之前被清除。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多