暂停/恢复活动之外的活动

时间:2012-10-19 07:42:21

标签: android android-intent android-activity

我有2项活动。主要活动A&活动B. 我不希望活动A破坏。我正在开始一项新任务中的活动B.

public static void startActivity(Class<?> startClass) {
    Intent intent = new Intent(Constants.getActivity(), startClass);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Constants.getActivity().startActivity(intent);
}`
  • Constants.getActivity()返回当前活动的上下文
  • startClass是活动“A”或活动“B”

他们创造/破坏活动并且他们泄漏。我做错了吗?如何从活动“A”开始活动“B”,反之亦然,当我不需要时,将它们保存在后台。

3 个答案:

答案 0 :(得分:0)

使用任务时,清理非常重要。您需要清理活动中的所有任务。 readthis

如果活动没有很多疯狂的初始化,只需使用finish和onCreates。否则请注意,当您在活动之间切换时,将经常调用onResume。清理在这里至关重要。如果你不清理,它可能的一个活动(使用其他清理活动的死对象引用)可能会从活动堆栈返回并抛出异常。很难调试这种例外。

答案 1 :(得分:0)

首先,你想做什么?您应该始终从UI中分离要在后台执行的操作。可以想象您的活动只是一个显示UI的容器,其他所有内容都可以从持久存储或已保存的实例包中存储和恢复。

了解Activity生命周期与服务生命周期之间的区别非常重要。

我将在这里提到另一个问题的回答:

Your app will be in the background, onResume and onPause will both be called,前提是操作系统有足够的内存来保留新应用和所有旧应用。

答案 2 :(得分:0)

如你所说,你不能让活动“活着”。当某项活动暂停时,Android系统始终可以随时声明其内存并将其卸载。

但是如果你想从A切换到B,那么A和B可能是单个活动中的不同视图。也许你想看看http://developer.android.com/reference/android/widget/ViewFlipper.html