public class RealmApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
}
}
实操
–
获取Ream实例
public static Realm newRealmInstance() {
return Realm.getInstance(new RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.name(RealmHelper.DB_NAME)
.build());
}
声明实体
**
-
User Model.
-
也可以使用@RealmClass注解来生命数据模型,比如:
-
@RealmClass
public class User implements RealmModel {
…
}
-
@author devilwwj
-
@since 2017/6/16
*/
public class User extends RealmObject {
// 主键唯一
@PrimaryKey
private String name;
private int age;
// 属性忽略,意味着此字段可以不被存储到数据库中
@Ignore
private int sessionId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSessionId() {
return sessionId;
}
public void setSessionId(int sessionId) {
this.sessionId = sessionId;
}
}
必须继承RealmObject.
写操作
realm.beginTransaction();
User user = realm.createObject(User.class); // 创建一个新的对象
user.setName(“John”);
user.setEmail(“john@corporation.com”);
realm.commitTransaction();
不想手动处理事务?使用以下方式:
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.createObject(User.class);
user.setName(“John”);
user.setEmail(“john@corporation.com”);
}
});
想异步处理事务?使用以下方式:
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
User user = bgRealm.createObject(User.class);
user.setName(“John”);
user.setEmail(“john@corporation.com”);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
// 事物成功完成
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
// 事物失败,自动取消
}
});
查操作
// 创建一个RealmQuery用于查找所有符合条件的user
RealmQuery query = realm.where(User.class);
// 添加查询条件
query.equalTo(“name”, “John”);
query.or().equalTo(“name”, “Peter”);
// 执行查询
RealmResults result1 = query.findAll();
// 或者进行简化
RealmResults result2 = realm.where(User.class)
.equalTo(“name”, “John”)
.or()
.equalTo(“name”, “Peter”)
.findAll();
改操作
realm.executeTransaction(new Realm.Transaction() {
尾声
面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Android核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、热修复设计、插件化框架解读、组件化框架设计、图片加载框架、网络、设计模式、设计思想与代码质量优化、程序性能优化、开发效率优化、设计模式、负载均衡、算法、数据结构、高级UI晋升、Framework内核解析、Android组件内核等。
不仅有学习文档,视频+笔记提高学习效率,还能稳固你的知识,形成良好的系统的知识体系。这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android进阶学习资料库
一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
大厂面试真题
PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
《2017-2021字节跳动Android面试历年真题解析》
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
14513549010)]
《2017-2021字节跳动Android面试历年真题解析》
[外链图片转存中…(img-Zy4cgc5U-1714513549011)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!