每日一练 20190526

博客主要探讨信息技术相关问题,包括如何删除SQLite中表的个别字段、SQLite的优化操作,还涉及Android中进程和线程的关系、开启多进程的方法及数量限制,以及IPC的必要性和多进程通信可能出现的问题。

1.如何删除SQLite中表的个别字段

参考回答:

    SQLite数据库只允许增加字段而不允许修改和删除表字段,只能创建新表保留原有字段,删除原表

 2.使用SQLite时会有哪些优化操作?

参考回答:

使用事务做批量操作
及时关闭Cursor,避免内存泄露
耗时操作异步化:数据库的操作属于本地IO耗时操作,建议放入异步线程中处理
ContentValues的容量调整:ContentValues内部采用HashMap来存储Key-Value数据,ContentValues初始容量为8,扩容时翻倍。因此建议对ContentValues填入的内容进行估量,设置合理的初始化容量,减少不必要的内部扩容操作
使用索引加快检索速度:对于查询操作量级较大、业务对查询要求较高的推荐使用索引

 3.Android中进程和线程的关系? 区别?

参考回答:

线程是CPU调度的最小单元,同时线程是一种有限的系统资源
进程一般指一个执行单元,在PC和移动设备上一个程序或则一个应用
一般来说,一个App程序至少有一个进程,一个进程至少有一个线程(包含与被包含的关系),
通俗来讲就是,在App这个工厂里面有一个进程,线程就是里面的生产线,但主线程(主生产线)只有一条,而子线程(副生产线)可以有多个
进程有自己独立的地址空间,而进程中的线程共享此地址空间,都可以并发执行

 4.如何开启多进程 ? 应用是否可以开启N个进程 ?

参考回答:

    在AndroidMenifest中给四大组件指定属性android:process开启多进程模式
    在内存允许的条件下可以开启N个进程

 5.为何需要IPC?多进程通信可能会出现的问题?

参考回答:

所有运行在不同进程的四大组件(Activity、Service、Receiver、ContentProvider)共享数据都会失败,这是由于Android为每个应用分配了独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这会导致在不同的虚拟机中访问同一个类的对象会产生多份副本。比如常用例子(通过开启多进程获取更大内存空间、两个或则多个应用之间共享数据、微信全家桶)
一般来说,使用多进程通信会造成如下几方面的问题

静态成员和单例模式完全失效:独立的虚拟机造成
线程同步机制完全实效:独立的虚拟机造成
SharedPreferences的可靠性下降:这是因为Sp不支持两个进程并发进行读写,有一定几率导致数据丢失
Application会多次创建:Android系统在创建新的进程会分配独立的虚拟机,所以这个过程其实就是启动一个应用的过程,自然也会创建新的Application

 

转载于:https://www.cnblogs.com/jiayonghua/p/10892892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值