찾다

 >  Q&A  >  본문

android - 如何才能不重新创建 Fragment 视图?

大家先看图,红色部分是一个 Fragment,右上角的放大镜用来点击弹出一个搜索的 Activity。这样有一个问题,弹出搜索 Activity 之后,红色框内的 Fragment 就被销毁视图了,这样每次返回就会重新创建视图,无意义地耗费用户流量,降低用户体验。

所以想请问,怎么样才能不让 Fragment 重新创建视图?


今天早上继续找原因,并看了一下包裹这个 Fragment 的 Activity 的生命周期,发现了一点猫腻。
正常情况下如第二张生命周期图,弹出新的 Activity 之后原 Activity 会执行 onStop 方法,返回后会执行 onRestart、onStart,只有进程被杀的情况下才会再次执行 onCreate 方法。

而现在我发现,点击搜索弹出 Activity 之后返回,原 Activity 竟然执行的是 onCreate,Fragment 又因为是在这里初始化的,所以才导致 Fragment 每次都会被重建。所以现在的问题是,为什么原 Activity 不走右边的生命周期而走了左边的生命周期。继续摸索中。。。


问题解决了,说下原因,是之前那人写的搜索 Activity 有问题,因为他让其销毁的时候是重新启动一个主页 Activity!而不是 finish!天哪,完全无法理解他这么做的意图。。。

阿神阿神2829일 전835

모든 응답(4)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-17 15:27:11

    fragment.hide() -> fragment.show() 이렇게 하면 다시 그려지지 않아요~(이런 경우는 잊어버렸네요) 다시 onCreateView(...)를 호출해도 처음 그린 view이 유지되고 다음 시간onCreateView(...)이 호출되면 예약된 시간View을 반납할 수 있습니다.

    예:

    으아악

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:27:11

    새 활동이 열릴 때 프래그먼트가 삭제되도록 하려면 어떻게 해야 합니까? 일반적인 사용에서는 이런 상황이 생각나지 않습니다

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 15:27:11

    더 많은 코드 세부정보를 게시할 수 있나요?
    정상적인 상황에서 새 Activity가 열리면 현재 Activity의 onStop 메서드가 호출되고, 연결된 Fragment의 onStop도 호출됩니다. 즉, 이전 Activity는 중지된 상태로 들어가야 합니다. 상태이므로 조각도 중지되어야 하며 삭제되어서는 안 됩니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 15:27:11

    점프코드를 보고 싶어요.

    회신하다
    0
  • 취소회신하다