安卓拨号器(AS+SQLite+ModelView)

百度网盘工程zip下载链接:https://pan.baidu.com/s/1TS8oTjQDdZY25J7dpFVKOg 
提取码:pjyz 
 

目录

项目中遇到的一些小问题

1.非ui线程里面修改界面数据,一定要通知

2.定义一个entity类时,实现Serializabel接口的目的?

3.另外在安卓访问数据库,要在主线程进行,会导致页面很卡。可以写一个子线程进行访问。如何将子线程访问到的数据发送给主线程呢?

4.主线程用Hadler接受子线程消息,需要将声明静态的MtHadler类继承Hanler类:

5.读取res/raw文件夹下的数据使用io流,虚拟机的文件系统与电脑文件系统不一样!不要用绝对路径读取数据。

6.AS下使用轻量级的数据库SQLite

8.当需要MainActivity和子Fragment共享一个viewModel时,在fragment里面一定是

9.SQLite语法编写错误,字符串两侧加' '


项目中遇到的一些小问题

1.非ui线程里面修改界面数据,一定要通知

2.定义一个entity类时,实现Serializabel接口的目的?

如果需要发送该类数据,使用Handler可以用handler.setData(new Bundle().putSerializable(数据对象))来实现

3.另外在安卓访问数据库,要在主线程进行,会导致页面很卡。可以写一个子线程进行访问。如何将子线程访问到的数据发送给主线程呢?

方法:可以使用Handler机制,主线程建立Handler对象,子线程使用。

所谓的在子线程通过handle发送消息,然后回主线程处理消息,通过handleMessage进行UI的更新,这个例子其实很常见,就是在主线程中我们通过创建一个mainHandler对象,然后并重写这个handler的handleMessage函数,并在子线程中通过主线程中创建的这个mainHandler来发送消息给主线程。

其实在主线程中创建的这个mainHandler,他在new的时候,就会自动的和主线程中的looper对象进行绑定,而looper对象里只有一个messageQueue,所以这样3者就建立了联系。同时主线程中的Looper会不停的loop,在这个loop函数里面他会不断的取looper对象里面的MessageQueue中的massage,然后调用消息目标(发送消息的handler)的handleMessage。其实这一切都是在主线程下执行的,所以才能进行UI的更新。

那么在子进程中发送消息,其实只是在子线程中引用了mainHander这个handler对象,并调用该handler对象的sendMessage函数发送消息,而发送消息函数sendMessasge函数所做的事情,是将需要发送出去的这个message放入handler对象的消息队列中,就完事了。注意:这里的发送消息,仅仅是将消息入队到调用发送消息的那个handler对象的消息队列中,而不是调用发送消息的这个子线程的消息队列中。

例如mainHandler.sendEmptyMessage(0)这个函数,他入队消息的队列是mainHandler对应的MessageQueue中,跟调用发送消息的队列无关。

4.主线程用Hadler接受子线程消息,需要将声明静态的MtHadler类继承Hanler类:

主线程:

子线程:

 

5.读取res/raw文件夹下的数据使用io流,虚拟机的文件系统与电脑文件系统不一样!不要用绝对路径读取数据。

 

6.AS下使用轻量级的数据库SQLite

双击可以打开:

8.当需要MainActivity和子Fragment共享一个viewModel时,在fragment里面一定是

ViewModelProviders.of(getActivity()).get(MyViewModel.class)

而不是

ViewModelProviders.of(this).get(MyViewModel.class)

9.SQLite语法编写错误,字符串两侧加' '

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hnu哈哈

请接受直女的么么哒????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值