实习笔记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,从而保证:只能指向这个对象,再不能指向其它对象),达到:局部内部类中访问的复制品与方法代码中访问的原始对象,永远都是同一个即:语义效 果是一样的。

答:

你可能感兴趣的:(实习笔记17.07.13(内部类使用局部变量要加final))