为什么onResume或onPause不会在我的UI上调用更少的片段?

时间:2014-04-08 19:16:41

标签: android

我有一个UI少片段。我已经设置了setRetainInstance。我想知道为什么onResume或onPause永远不会被调用。

1 个答案:

答案 0 :(得分:1)

我写了一个简单的测试证明 无头onPause()onResume()(没有用户界面)保留片段获取调用对应主机Activity的生命周期,只需按预期

public class MainActivity extends Activity {

    protected static final String TAG = MainActivity.class.getName();

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FragmentManager mgr = getFragmentManager();
        Fragment f = mgr.findFragmentByTag("mytag");
        if(f == null){
            f = new UILess();
            mgr.beginTransaction().add(f, "mytag").commit();
        }


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


    @Override
    protected void onResume() {
        super.onResume();
        Log.e(TAG, "resumes");
    }
}

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