实习笔记17.07.13(内部类使用局部变量要加final)

  1. Rxjava:如果在新建observable之前有外部参数想要传递到内部,如何传递?
    答:直接在使用类中定义成员变量,然后传递到成员变量中
  2. Rxjava以数据流为核心,以响应式编程的方式同时编写被观察者和观察者的动作,但通常我们被观察者是Model层,观察者是View层,是不是违背了MVP分层原则?(应该不是,完全可以在被观察者的动作中操作model,在观察者的动作中操作view,但怎么才能将model和view传入呢???-------使用presenter将二者连接起来)
  3. 查询手机文件时要通过应用context获取 getContentResolver(),如果这时不在activity中,可以写一个工具类ContextUtil来获得,代码如下:
public class BaseActivity extends Activity {
    private static Application mApplication;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mApplication = this.getApplication();
    }

    public static Application getBaseApplication() {
        return mApplication;

    }
}
  1. xhdpi--对应项目目录是:720*1280
  2. 内部类持有外部类的引用,可以引用外部类的成员变量,但使用局部变量的时候要注意XXX --final?
  3. textview和drawable可以结合
  4. getbaseapplication作为工具类,如果传入activity的引用会产生内存泄漏的问题
  5. RxAndroid获取当前线程的id值
  6. tid可以理解为线程的Id , pid 是process进程id , uid 是user 用户id;
    例:android.os.Process.myTid()
  7. IO线程和普通线程的区别? 在RxJava中,subscribeOn(newThread())可以实现读取数据库,subscribeOn(io())会异常
    答:因为读取数据库操作不是io = =,android中媒体数据库时媒体文件的映射

git:

  1. 资源文件的转移 xhdpi 720*1280
  2. 布局文件的优化
  3. BaseActivity的运用,可以作为工具类获得application
  4. getHomeDefaultPhotoList去掉context参数,优化为相册名称albumName参数
  5. 引入RxJava
  6. 查询手机相册信息改为异步查询
  7. 内部类使用外部参数为什么要变成final?
    答:
    【问题场景】
    设方法useMyInterface被调用,从而在它的调用栈中生成了变量number,此时产生了一个局部内部类对象myInterface,它访问了该局部变量number .
    当方法useMyInterface运行结束后,局部变量number就已死亡了,不存在了.
    但局部内部类对象myInterface还可能一直存在(只能没有人再引用该对象时,它才会死亡),它不会随着方法useMyInterface运行结束死亡.这时出现了一个"荒唐"结果:局部内部类对象myInterface要访问一个已不存在的局部变量number
    【java解决办法】
    通过将局部变量"复制"一份,复制品直接作为局部内部类的数据成员.这样:当局部内部类访问局部变量 时,其实真正访问的是这个局部变量的"复制品"(即:这个复制品就代表了那个局部变量).因此:当运行栈中的真正的局部变量死亡时,局部内部类对象仍可以 访问局部变量(其实访问的是"复制品"),给人的感觉:好像是局部变量的"生命期"延长了.
    【为什么要将外部局部变量设置为final?】
    答:为了保证变量的一致性。这里分两种情况讨论:
    (1)基本数据类型。当变量是final时,由于其值不变,因而:其复制品与原始的量是一样.语义效果相同
    若:不是final,就无法保证:复制品与原始变量保持一致了,因为:在方法中改的是原始变量,而局部内部类中改的是复制品
    (2)引用类型。 变量是final时,由于其引用值不变(即:永远指向同一个对象),因而:其复制品与原始的引用变量一样,永远指向同一个对象(由于是 final,从而保证:只能指向这个对象,再不能指向其它对象),达到:局部内部类中访问的复制品与方法代码中访问的原始对象,永远都是同一个即:语义效 果是一样的。

答:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,523评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,578评论 18 399
  • 最近气温实在越来越猖狂!炎炎夏日该怎么穿呢?想要穿短裤、短裙,却又怕一不小心在意的肉肉跑出来跟大家 Say Hi ...
    ivivi2016阅读 1,850评论 0 0
  • “玉米,玉米,一斤三元,十元四斤……”高呼大叫的菜贩子,就叫嚷嚷着。 走近菜圩,热闹的叫卖声也随着,声声入耳。 “...
    小草_d5ad阅读 2,720评论 10 29
  • 郭相麟 镜头中 人们在光线场景里 寻找人物的特写 在黑白之间 触摸着人们的真情流露 画面的定格 让人们的心灵在沉醉...
    郭相麟阅读 1,589评论 0 0

友情链接更多精彩内容