- Rxjava:如果在新建observable之前有外部参数想要传递到内部,如何传递?
答:直接在使用类中定义成员变量,然后传递到成员变量中 - Rxjava以数据流为核心,以响应式编程的方式同时编写被观察者和观察者的动作,但通常我们被观察者是Model层,观察者是View层,是不是违背了MVP分层原则?(应该不是,完全可以在被观察者的动作中操作model,在观察者的动作中操作view,但怎么才能将model和view传入呢???-------使用presenter将二者连接起来)
- 查询手机文件时要通过应用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;
}
}
- xhdpi--对应项目目录是:720*1280
- 内部类持有外部类的引用,可以引用外部类的成员变量,但使用局部变量的时候要注意XXX --final?
- textview和drawable可以结合
- getbaseapplication作为工具类,如果传入activity的引用会产生内存泄漏的问题
- RxAndroid获取当前线程的id值
- tid可以理解为线程的Id , pid 是process进程id , uid 是user 用户id;
例:android.os.Process.myTid() - IO线程和普通线程的区别? 在RxJava中,subscribeOn(newThread())可以实现读取数据库,subscribeOn(io())会异常
答:因为读取数据库操作不是io = =,android中媒体数据库时媒体文件的映射
git:
- 资源文件的转移 xhdpi 720*1280
- 布局文件的优化
- BaseActivity的运用,可以作为工具类获得application
- getHomeDefaultPhotoList去掉context参数,优化为相册名称albumName参数
- 引入RxJava
- 查询手机相册信息改为异步查询
- 内部类使用外部参数为什么要变成final?
答:
【问题场景】
设方法useMyInterface被调用,从而在它的调用栈中生成了变量number,此时产生了一个局部内部类对象myInterface,它访问了该局部变量number .
当方法useMyInterface运行结束后,局部变量number就已死亡了,不存在了.
但局部内部类对象myInterface还可能一直存在(只能没有人再引用该对象时,它才会死亡),它不会随着方法useMyInterface运行结束死亡.这时出现了一个"荒唐"结果:局部内部类对象myInterface要访问一个已不存在的局部变量number
【java解决办法】
通过将局部变量"复制"一份,复制品直接作为局部内部类的数据成员.这样:当局部内部类访问局部变量 时,其实真正访问的是这个局部变量的"复制品"(即:这个复制品就代表了那个局部变量).因此:当运行栈中的真正的局部变量死亡时,局部内部类对象仍可以 访问局部变量(其实访问的是"复制品"),给人的感觉:好像是局部变量的"生命期"延长了.
【为什么要将外部局部变量设置为final?】
答:为了保证变量的一致性。这里分两种情况讨论:
(1)基本数据类型。当变量是final时,由于其值不变,因而:其复制品与原始的量是一样.语义效果相同
若:不是final,就无法保证:复制品与原始变量保持一致了,因为:在方法中改的是原始变量,而局部内部类中改的是复制品
(2)引用类型。 变量是final时,由于其引用值不变(即:永远指向同一个对象),因而:其复制品与原始的引用变量一样,永远指向同一个对象(由于是 final,从而保证:只能指向这个对象,再不能指向其它对象),达到:局部内部类中访问的复制品与方法代码中访问的原始对象,永远都是同一个即:语义效 果是一样的。
答:
网友评论