synchronized(同步):当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用.
生产随机数: float f = Math.random(); //{o,1)之间
Random random = new Random(); int i = random.nextInt(100); //[0,100)之间
轻量级存储工具:
sharedPreferences :保存在手机里面,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml
保存基于XML文件存储的key-value键值对数据
sharedPreferences = Context(Activity).getSharedPreferences(String name, int mode);//若文件不存在,则新建
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用,这个就是Activity和Context的区别。
mode:
MODE_PRIVATE :只能是建立文件的程序可以访问
MODE_APPEND :检查文件,文件存在则在文件的末尾添加,不存在则建立文件并在里面添加内
MODE_WORLD_READABLE :所有程序都可以访问文件但是不能更改
MODE_WORLD_WRITEABLE :所有程序都可以改变文件的内容
Editor edit = sharedPreferences.edit(); edit.putInt(key, value); ...
edit.commit(); //edit.appiy();
提交方式有两种:
commit(同步),apply(异步).
区别:(1)commit 是直接将数据存到硬盘中的,而 apply 是将数据传到内存中,继而异步到磁盘中,
如果有多个commit 并发提交数据的时候,只能排队一次提交,这样大大降低了效率;
(2)commit 会返回信息,但是 apply 不会给出任何提示信息,就算保存失败也不会提示。
sqlite: 轻量级数据库
String dbName = "test.db";
SQLiteOpenHelper helper = new SQLiteOpenHelper(context, dbName, cursorfactory, version) {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists "+ tableName+"(Id integer primary key, Record text, OrderPrice integer, Country text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists "+ tableName);
onCreate(db);
}
};
SQLiteDatabase database = helper.getWritableDatabase();
database.beginTransaction();
//数据库操作 增删改查
database.endTransaction();
database.close();
ormlite框架:
一、bean类,数据对象实例化
二、写Helper类,继承OrmLiteSqliteHelper类(在此类中完成的功能有:创建数据库 db, 新建数据表 table,以及版本更新时建表)
三、Dao类,可用BaseDao<T>,对数据对象的增删改查操作