救护车,火烧圆明园,阎维文-我们的趴体,趴体举办专家

1.synchronize用法

synchronized 办法:经过在办法声明中参加 synchronized关键字来声明 synchronized 办法。如:

public synchronized void accessVal(int newVal);

sync千宫百计hronized 办法操控对类成员变量的拜访:每个类实例对应一把锁,每个 synchronized 办法都有必要取得调用该办法的类实例的锁方能履行,否则所属线程堵塞,办法一旦履行,就独占该锁,直到从该办法回来时才将锁开释,尔后被堵塞的线程方能取得该锁湘粤陶粒,从头进入可履行状况。这种机制确保了同一时刻关于每一个类实例,其一切声明为 synchronized 的成员函数中至多只需一个处于可履行状况(由于至多只需一个能够取得该类实例对应的锁),然后有用防止了类成员变量的拜访抵触(只需一切或许拜访类成员变量的办法均被声明为 synchronized)。

synchronized 块:经过 synchronized关键字来声明synchronized 块。语法如下:

synchronized(syncObject) {

//答应拜访操控的代码

}

synchronized 块是这样一个代码块,其间的代码有必要取得方针 syncObject (如前所述,可所以类实例或类)的锁方能履行,详细机制同前所述。由于能够针对恣意代码块,且可恣意指定上锁的方针,故灵活性较高。

2.volatile用法

volatile是Java供给的一种轻量级的同步机制,同synchronized比较,volatile更轻量级,在拜访volatile变量时不会履行加锁操作,因而也就不会使履行的线程堵塞。

volatile缺陷

volatile不能确保原子性,volatile能够合作synchronized确保原子性。

原子性:原子性是指一个操作是不行中止的,要么悉数履行成功要么悉数履行失利,有着“同生共死”的感觉。及时在多个线程一同履行的时分,一个操作一旦开端,就不会被其他线程所搅扰。

https://www.jianshu.c石萱om/p/844aa1b8ab22

3.动态权限适配计划,权限组的概念

将权限分组,按组分配下去。一次性分配就分配一个权限组。权限组的意思就涂健是一组权限的调集。

动态权限办理便是这样, 一方面让用户愈加简单的操控自己的隐私, 一方面需求从头适配运用权限.

Android体系包括默许的授权提示框, 可是咱们仍需求设置自己的页面. 原因是体系供给的授权框, 会有不再提示的选项. 假如用户挑选, 则无法触发授权提示. 运用自定义的提示页面, 能够给予救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家用户手动修正授权的辅导.

https://www.jianshu.com有屁村/p/dbe4d37731e6

权限分类:

正常权限:不会直接给用户隐私权带来风险。假如您的运用在其清单中列出了正常权限,体系将会主动颁布该权限。

风险权限:会颁布运用拜访用户秘要数据的权限。假如您的运用在其清单中列出了风险权限,则用户有必要清晰同意您的运用运用这些权限。

4.网络恳求缓存处理,okhttp怎么处理网络缓存的

意图:缓存常常拜访的一些数据,削减数据传输,然后削减带宽,削减付出的流量费。

处理的办法便是把重复恳求的数据缓存在本地,并设置超时时刻,在规则时刻内,客户端不再儿童洗澡向长途恳求数据,而是直接从本地缓存中取数据。这样一来提高了呼应速度,二来节约了网络带宽。

1.okhttp用CacheControl进行缓存的操控。

2.okhttp用拦截器增加Cache-Control音讯头进行缓存定制

https://blog.csdn.net/briblue/article/details/52920531

5.okhttp

OkHttp不只具有高效的恳求功率, 而且供给了许多开箱即用的网络疑难杂症处理计划.

支撑HTTP/2, HTTP/2经过运用多路复用技能在一个独自的TCP衔接上支撑并发, 经过在一个衔接上一次性发送多个恳求来发送或接纳数据

假如HTTP/2不行用, 衔接池复用技能也能够极大削减延时

支撑GZIP, 能够紧缩下载体积

呼应缓存能够直接防止重复恳求

会从许多常用的衔接问题中主动康复

假如您的服务器装备了多个IP地址, 当第一个IP衔接失利的时分, OkHttp会主动测验下一个IP

OkHttp还处理了代理服务器问题和SSL握手失利问题

6.图片加载库相关,bitmap怎么处理大图,如一张30M的大图,怎么防备OOM

Android的虚拟机是依据寄存器的Dalvik,它的最大堆巨细一般是16M,有的机器为24M。因而咱们所能运用的内存空间是有限的。假如咱们的内存占用超过了必定的水平就会呈现OutOfMemory的过错。

1.BitmapFactory供给了几种解码办法.依据你的图片数据来历挑选最适宜的解码办法

2.尽量不要运用setImageBitmap或setImageResource或BitmapFactory.decodeResource直接运用图片途径来设置一张大图,由于这些函数在完结decod谢咏殊e后,终究都是经过释梦大全java层的createBitmap来完结的,需求救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家消耗更多内存。改用先经过BitmapFactory.decodeStream办法,创立出一个bitmap,再调用上述办法将其设为ImageView的 source。decodeStream最大的隐秘在于其直接调用JNI>>nativeDecodeAsset()来完结decode,无需再运用java层的createBitmap,然后节约了java层的空间。

3.运用图片缓存技能

预估一下加载整张图片所需占用的内存。

为了加载这一张图片你所乐意供给多少内存。

用狄加度于展现这张图片的控件的实践巨细。

当时设备的屏幕尺度和分辨率。

应该去剖析程序内存的运用状况,然后拟定出一个适宜的缓存空间巨细

7.Fresco,Glide,Picasso

他们都是将图片外链解析成图片在App里展现的库,这三个库有各自的好与坏,要对比起看。 在体积上:Fresco > Glide > Picasso

Glide 的 with 办法不但承受 Context,还承受 Activity 和 Fragment

Glide 加载显现非常快,能够加载 GIF 动态图,而 Picasso 不能。

Picasso 比 Glide 体积小许多且图画质量比 Glide 高。

Picasso 所能完结的功用 Glide 都能做到,但体积比Glide小,图片质量高.假如是视频类运用,首选 Glide。

Fresco 中规划有一个叫做 Drawees 模块,它会在图片加载完结前显现占位图,加载成功后主动替换为方针图片。当图片不再显现在屏幕上时,它会及时地开释内存和空间占用。最大极限节约空间和 CPU 时刻。

Fresco 在图片较多的运用中更能凸显其价值。

8.greenDAO

greenDAO 是一款开源的面向 Android 的简便、方便的 ORM 结构,将 Java 方针映射到 SQLite 数据库中,咱们操作数据库的时分,不在需求编写杂乱的 SQL句子, 在功用方面,greenDAO 针对 Android 进行了高度优化, 最小的内存开支 、依托体积小 一起仍是支撑数据库加密。



greendao在刺进,更新,读取操作上功用很好。

GreenDao 是支撑加密的,能够安全的保存用户数据。

GreenDao 中心库小于100k ,所以咱们并不会忧虑增加 GreenDao 后 APK 巨细会变的是否巨大。

GreenDao 支撑 protocol buffer(protobuf) 协议数据的直接存储,假如你经过 protobuf 协议与服务器交互,将不需求任何的映射。

greenDAO 会依据装备信息主动生成中心办理类以及 D叶佳宜小说AO 方针

DaoMaster:

运用 greenDAO卖收网 的进口点。DaoMaster 担任办理数据库方针(SQLiteDatabase)和 DAO 类(方针),咱们能够经过它内部类 OpenHelper 和 DevOpenHel颜丹晨老公陈昊per SQLiteOpenHelper 创立不同形式的 SQLite 数据库。

DaoSession :

办理指定形式下的一切 DAO 方针,DaoSession供给了一些通用的耐久性办法比方刺进、负载、更新、更新和删去实体。

XxxDAO :

每个实体类 greenDAO 多会生成一个与之对应DAO方针,如:User 实体,则会生成一个一个UserDao 类

Entities

可耐久化方针。一般, 实体方针代表一个数据库行运用规范 Java 特点(如一救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家个POJO 或 JavaBean )。

9.救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家进程保活

Android 进程拉活包括两个层面:

供给进程优先级,下降进程被杀死的概率

在进程被杀身后,进行拉活

怎么提高进程优先级?

运用 Activity 提高权限

计划规划思维:监控手机锁屏解锁事情,在屏幕锁屏时发动1个像素的 Activity,在用户解锁时将 Activity 销销毁。留意该 Activity 需规划成用户无感知。

运用 Notification 救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家提高权限

计划规划思维:Android 中 Service 的优先级为4,经过 setForeground 接口能够将后台 Service 设置为前台 Service,使进程的优先级由4提高为2,然后使进程的优先级仅仅低于用户当时正在交互的进程,与可见进程优先级共同,使进程被杀死的概率大大下降。

进程身后拉活的计划?

1.运用体系播送拉活

计划规划思维:在发作特定体系事情时,体系会宣布呼应的播送,经过在 AndroidManifest 中“静态”注册对应的播送监听器,即可在发作呼应事情时拉活。

2.运用第三方运用播送拉活

计划规划思维:该计划总的规划思维与接纳体系播送相似,不同的是该计划为接纳第三方 Top 运用播送。

经过反编译第三方 Top 运用,如:手机QQ、微信、付出宝、UC浏览器等,以及友盟、信鸽、个推等 SDK,找出它们外发的播送,在运用中进行监听,这样当这些运用宣布播送时,就长春砍手门会将咱们的运用拉活。

3. 运用体系Service机制拉活

计划规划思维:将 Service 设置为 START_STICKY,运用体系机制在 Service 挂掉后主动拉活:

4.运用Native进程拉活

运用 Linux 中的 fork 机制创立 Native 进程,在 Native 进程中监控主进程的存活,当刘亦菲表姐主进程挂掉后,在 Native 进程中立即对主进程进行拉活。

5.运用 JobScheduler 机制拉活

计划规划思维:Android5.0 今后体系对 Native 进程等加强了办理,Native 拉活办法失效。体系在 Android5.0 以上版别供给了 JobSchedul救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家er 接口,体系会守时调用该进程以使运用进行一些逻辑操作。

其他处理生锈小湖计划:

运用体系告诉办理权限进行拉活

运用辅佐功用拉活,将运用参加厂商或办理软件白名单。

10.进程优先级

进程的重要性,区分5级:

前台进程 (Foreground proce救护车,火烧圆明园,阎维文-咱们的趴体,趴体举行专家ss)

可见进程 (Visible process)

服务进程 (Service process)

后台进程 (Background process)

空进程 (Empty process)

前台进程的重要性最高,顺次递减,空进程的重要性最低

11.Android 进程收回战略

A江雪何升ndroid 中关于内存的收回,首要依托 Lowmemorykiller 来完结,是一种依据 OOM_ADJ 阈值等级触发相应力度的内存收回的机制。

比较简单被杀死的 Android 进程(OOM_ADJ>=4)

Lowmemorykiller 收回内存时会依据进程的等级优先杀死 OOM_ADJ 比较大的进程,关于优先级相同的进程则进一步遭到进程所占内存和进程存活时刻的影响

12.listview图片加载紊乱的原理和处理计划

用了findViewWithTag()办法之后,图片就不会再呈现乱序状况了呢?其实原因很简单,由于ListView中的ImageView控件都是重用的,移出屏幕的控件很快会被进入屏幕的图片从头运用起来,那么getView()办法就会再次得到履行,而在getView()办法中会为这个ImageView控件设置新的Tag,这样老的Tag就会被覆盖掉,所以这时再调用findVIewWithTag()办法并传入老的Tag,就只能得到null了,而咱们判别只需ImageView不等于null的时分才会设置图片,这样图片乱序的问题也就不存在了。

13. https相关,怎么验证证书的合法性,https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也便是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会经过TLS进行加密,所以传输的数据都是加密后的数据。

HTTPS协议的服务器有必要要有一套数字证书,能够自己制造,也能够向安排请求。差异便是自己颁布的证书需求客户端验证经过,才干够持续拜访,而运用受信赖的公司请求的证书则不会弹出提示页面。这套证书其实便是一对公钥和私钥

公钥私钥了解

假如对公钥和私钥不太了解,能够幻想成一把钥匙和一个锁头,仅仅全世界只需你一个人有这把钥匙,你能够把锁头给他人,他人能够用这个锁把重要的东西锁起来,然后发给你,由于只需你一个人有这把钥匙,所以只需你才干看到被这把锁锁起来的东西。

怎么验证证书的合法性

证书其实便是公钥,仅仅包括了许多信息,如证书的颁布组织,过期时刻等等。查看公直播之土豪体系钥里的颁布组织。

颁布证书的组织是否合法,证书中包括的网站地址是否与正在拜访的地址共同

客户端的TLS来完结的证书的解析与验证,首先会验证公钥是否有用,比方颁布组织,过期时刻等等,假如发现异常,则会弹出一个正告框,提示证书存在问题。假如证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,否则看不到被锁住的内容。

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容经过该值进行对称加密。所谓对称加密便是,将信息和私钥经过某种算法混合在一同,这样除非知道私钥,否则无法获取内容,而正好客户端和服务端都知道这个私钥,所以只需加密算法够彪悍,私钥够杂乱,数据就够安全。

哪里用了对称加密,哪素氢泉里用了非对称加密?

一般的HTTPS衔接只在第一次握手时运用非对称加密,经过握手交流对称加密密钥,在之后的通讯走对称加密。

原因在于寻觅大素数、大数核算、数据切割需求圆圆大光头消耗许多的CPU周期

对加密算法(如RSA)等是否有了解?