Fragment & Task

来源:互联网 发布:u盘数据恢复后文件沒 编辑:程序博客网 时间:2024/05/17 16:13
points:

    1,为了保证 Fragment 的复用,最好不要在 Fragment 中直接操作其他 Fragment,因为这会导致耦合度过高而不

能复用。如果当前 Fragment 需要与其它 Fragment 通信(如包含新闻目录列表的 A 与 详细新闻 B 的通信),可通

过 Host Activity来完成。具体是: 在 A 中定义一个接口 InterfaceA,包含方法 WhenItemClicked(String id); 同时让

Host Activity 实现这个接口,并在这个 WhenItemClicked 方法里更新 B 中的新闻;而在 A 中,在点击列表事件的时

候,只需调用 InterfaceA.WhenItemClicked(listID) 即可。我看到有些项目中,在一个叫 WebService 的类中集中处理

向服务器发送请求,同时定义一个接口,当获取到了数据时,调用这个接口。而实现这些接口的地方,正是各个

Activity。

    2,或许应该经常在 Fragment'onPause() 保存数据,becausethe user might not come back (官方解释)


    3,对于 FragmentTransaction 如果执行 remove 、addToBackStack、commit,那么这个 Fragment 处于stoped 状态而非Destroyed


    4,inflater.inflate( ,container ,false) 这里的为什么设置为FALSE?因为系统会自动把当前这个View 添加到Activity的视图结      构中去,如果是true,就会重复添加。


    5,如果系统因为内存不足而回收了 Background Task 中的某个 Activity,那么这个Activity在此 Task 的位置信息还是会保存的。只是当用户 press Back Button,需要 recreate。


    6,The way Android manages tasks and the back stack 有以下几种:   
        A 用manifest 属性指定的有 starndard, singleTop, singleTask, singleInstance。
        B 用Intent flag 指定的有 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP
        若同时定义了 A 、B,B 会覆盖 A 的定义。
      
       singleTop,当且仅当正要启动的 Activity 在 BackStack 的栈顶,此时系统会通过 onNewIntent() 来启动这个已经存在的
       Activity(不会重新创建 Activity),在其它情况下,还是会跟 standard 模式一样。
0 0
原创粉丝点击