Android 为什么onResume或onPause从未在我的无UI片段上被调用?
我有一个没有UI的片段。我已经设置好了持续时间。我想知道为什么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();
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