Android 为什么onResume或onPause从未在我的无UI片段上被调用?

Android 为什么onResume或onPause从未在我的无UI片段上被调用?,android,Android,我有一个没有UI的片段。我已经设置好了持续时间。我想知道为什么onResume或onPause从未被调用。我写了一个简单的测试,证明无头(无UI)保留片段的onPause()和onResume()被调用与主机活动的生命周期相对应,正如预期的那样: 其中UILess片段如下: public class UILess extends Fragment { public static final String TAG = UILess.class.getSimpleName();

我有一个没有UI的片段。我已经设置好了持续时间。我想知道为什么onResume或onPause从未被调用。

我写了一个简单的测试,证明无头(无UI)保留片段的
onPause()
onResume()
被调用与主机
活动的生命周期相对应,正如预期的那样:

其中
UILess
片段如下:

public class UILess extends Fragment {

    public static final String TAG = UILess.class.getSimpleName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.e(TAG, "paused");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.e(TAG, "resumes");
    }
}
这一简化的(已删除的软件包等)logcat输出表明,无论碎片是否无头,这两种方法都会运行(由设备旋转时的配置更改触发)

04-16 13:47:39.840  E/MainActivity﹕ resumes
04-16 13:47:39.855  E/UILess﹕ resumes
04-16 13:47:48.623  E/UILess﹕ paused
04-16 13:47:48.623  E/MainActivity﹕ paused
04-16 13:47:48.751  E/MainActivity﹕ resumes
04-16 13:47:48.754  E/UILess﹕ resumes

那么,您是否愿意共享您的代码片段,在其中初始化您的片段,并将其链接到某个活动?事实证明,您的onResume或onPause语句从未被调用。这是错误的。bug肯定在别处。如果不添加相关代码,没有人能给出比@Drew更好的答案。我使用了支持库。您对支持库有相同的行为吗?我对支持库有完全相同的行为-support.v4.*、support.v7.*,以及它们相应的ActionBarActivity、FragmentActivity等。一切都如我前面所述。我必须看到你的代码的一部分,以了解你是如何体验到不同的行为的。我现在也尝试了你的测试。包括使用不同的支持库,并可以验证您是否正确。我得到了相同的输出。看起来问题中的“onPause/onResume not called”语句完全错误。我起初相信这个问题,但现在我改变了主意,因为机器不会说谎;-)为提供证据竖起大拇指。是的,他们没有;-)感谢您的双重检查和支持!
04-16 13:47:39.840  E/MainActivity﹕ resumes
04-16 13:47:39.855  E/UILess﹕ resumes
04-16 13:47:48.623  E/UILess﹕ paused
04-16 13:47:48.623  E/MainActivity﹕ paused
04-16 13:47:48.751  E/MainActivity﹕ resumes
04-16 13:47:48.754  E/UILess﹕ resumes