有一段时间没有碰过android开发了,这次趁着Kotlin的学习重温了android开发,断断续续用了周末两天时间使用Kotlin简单编写了一个闹钟app。不得不承认,Kotlin对android原生Java开发来说,代码量少的不仅仅是一个数量级,大大减轻了码农的工作量,有了更快的开发速度,更一致的开发体验;有JavaScript开发经验的朋友上手会更快,强烈推荐。
回到App上,该App延续了Material Design风格,实现最基础的闹钟功能,还有一些其他的铃声选择,重复日期选择以及标签功能。另外集成了Xutils 3.5.0框架,对其Http和Db模块进行了二次封装,后期考虑是否需要增加个云闹钟的功能。
github地址:https://github.com/liaozp9112/AlarmClock
顺便提一句Xutils3.5 DB模块没有提供初始数据表的操作,一定是在对表插入或者,更新或者删除操作后才会初始化相应表,如果在此之前进行数据查询时会报错,我仿造它建表的句在app初始化时就初始化所有表。
private fun createAllTables(){
for (table in Tables.values()){
val cl = Class.forName(table.tablepath);
createTableIfNotExist(x.getDb(daoConfig).getTable(cl));
}
}
@Throws(DbException::class)
protected fun createTableIfNotExist(table: TableEntity<*>) {
if (!table.tableIsExist()) {
synchronized(table.javaClass) {
if (!table.tableIsExist()) {
val sqlInfo = SqlInfoBuilder.buildCreateTableSqlInfo(table)
x.getDb(daoConfig).execNonQuery(sqlInfo)
val execAfterTableCreated = table.onCreated
if (!TextUtils.isEmpty(execAfterTableCreated)) {
x.getDb(daoConfig).execNonQuery(execAfterTableCreated)
}
}
}
}
}
}
enum class Tables(val tablepath:String){
//闹钟表
T_ALARM_CLOCK("cn.com.liaozp.alarmclock.xutils.db.T_ALARM_CLOCK");
}