Android-数据库Room框架的简单使用

Android-数据库Room框架的简单使用,第1张

在 buildgradle 中添加依赖

创建 Person 类

创建 DaoPerson 类

创建 AppBaseDatabase 类

创建 AppDataBaseManager 类

在 MainActivity 中

TODO

在一个Activity更新另一个Activity的UI的几种方法:

1如果数据能存储在本地数据库的话,那么可以先把数据封装到ContentProvider,然后列表页通过Loader方式加载数据,详情页用ContentObserver的方式的方式修改数据。简单的数据存储在SharedPreference的话,也可以这种监听文件数据改变的方式处理。但是这个限制是数据是在本地存储的。我的数据来自网络,暂时不打算在本地做持久化。

2把数据列表的Adapter共享出来,在详情页 *** 作后,一方面更新网络上报,一方面notify,直接传递单项的数据对象到列表里。但这种暴露全局数据的方式貌似不好。

3两个Activity共享Handler, 比如,共同继承的基类里构造一个共有的Handler,在详情页 *** 作后,发出消息,让列表页去响应。这样还需要共享一个全局数据对象。

4列表Activity直接提供静态方法供详情页调用

5改成startActivityForResult, 每个更改 *** 作后修改当前数据对象,拦截返回键,触发setResult,Intent的方式回传数据

6LocalBroadcastReceiver, 监听器真是万能的,在详情页发出广播即可,列表接受到进行更新 *** 作,也是Intent传数据,数据对象大的话,可能效率会有影响。

Intent intent = new Intent();

//用intentputExtra(String name, String value);来传递参数。

intentputExtra("one",number1);

intentputExtra("two", number2);

intentsetClass(activity1this, activity2class);

startActivity(intent);

然后在activity2中

Intent intent1 = getIntent();

// 用intent1getStringExtra()来得到activity1发过来的字符串。

String one = intent1getStringExtra("one");

String two = intent1getStringExtra("two");

然后在sql语句获取值存储。

哦是这样的

activity中new Presenter , 将 new fragment的对象传入presenter

fragment中实现contact契约中view的setPresenter方法将presenter回传

这时候你presenter中的view实例是fragment而非activity,所以在presenter中调用viewsetpresenter(this)将自己传给fragment,这样就实现了activity和fragment公用一个presenter

对于一个activity对应很多fragment的情况还是很实用的

这种方式是谷歌mvp源码中的实现方式

刚好最近又梳理了一下,结合我的实际使用场景回答一下= =

有四种启动模式,需要知道的是activity是交由activity栈(任务栈)管理的

standard : 会在启动时创建一个新实例入栈,所以每次打开都是一个新的界面

场景:默认模式,一般的activity用这个就好

singleTop:当启动activity时,有相同的activity在前台与用户交互,就复用这个activity,回调onNewIntent()方法,避免栈顶的activity被重复的创建;如果没在栈顶,依然会创建新的实例加在栈顶

场景:这个主要针对重复打开的情况,比如你点击通知栏,跳转到消息中心,如果此时消息中心已经打开,就不会重新打开新的界面,合乎逻辑

singleTask:类似singleTop,也是避免重复创建,唯一不同的是,当启动activity时,有相同的activity在栈内,会复用此activity,回调onIntent(),并清空此activity之上所有activity

场景:一般用于程序主界面,利用清空activity的特性,比如你在应用内,打开了多个界面,触发了某个 *** 作后都需要跳转到首页,设置了singleTask之后,就直接启动主页就好,会把之前打开的全部关掉(免得你手动一个一个关闭activity)

singleInstance:顾名思义,单一实例,整个手机 *** 作系统里面只有一个实例存在。不同的应用去打开这个activity 共享公用的同一个activity

场景:常见于系统呼叫来电界面,每个应用打开不会重新创建新的该拨打界面。这种模式比较少用,除非你确定需要使该Activity只有一个实例

最后,上面介绍是在默认没有指定taskAffinity的情况下(即包名),具体想要更深入或者实现更复杂的场景,请结合taskAffinty和Intent Flag具体分析,在此就不介绍了。

以上。

1、第一步我们需要建一个类继承SQLiteOpenHelper帮助类来创建数据库,使用publicstaticfinalStringCREATE_BOOK=\"createtableBook()方法,如下图所示:

2、第二步我们activity_mainxml布局文件中添加一个按钮,实现在界面点击按钮创建数据库的功能,如下图所示:

3、第三步修改MainActivity的部分代码,通过dbHelpergetWritableDatabase();来创建数据库,如下图所示:

4、第四步我们运行项目,在界面上点击创建数据库按钮,可以看到已经创建成功了,可以到adb中去看数据库具体内容,如下图所示:

以上就是关于Android-数据库Room框架的简单使用全部的内容,包括:Android-数据库Room框架的简单使用、如何在一个Activity更新另一个Activity的UI、Android 从activityA跳转传值到activityB中 然后在B中把A的传过来的数据保存到数据库怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9796084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存