Android 笔记

Java 基础 =========================================

*Java中负数的二进制表示

计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码

正数的补码,反码都是其本身,补码=反码+1(负数的二进制为=符号位+补码)

在 二进制里,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。

以java中8位的byte为例,最大值为:0111 1111,最小值为1000 0001。

十进制 ==> 二进制

对于正数我们直接转换即可,对于负数则有一个过程。

    以负数-5为例:

    1.先将-5的绝对值转换成二进制,即为0000 0101;

    2.然后求该二进制的反码,即为 1111 1010;

    3.最后将反码加1,即为:1111 1011

Integer.toBinaryString(-5)结果为11111111111111111111111111111011. Integer是32位(bit)的

正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行补位(自然而然的,就由负数变成了正数了)

位异或( ^ ):不同的为1

位非( ~ )

5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101
-6转换为二进制:1111 1111 1111 1111 1111 1111 1111 1010

*常用的加密算法

        |对称加密(加解密密钥相同)常用的有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES
双向加密|
        |非对称加密(公钥与私钥是一对,公钥加密->私钥解密;私钥加密->公钥解密。)常用的有:RSA、DSA
    
单向加密(Hash算法-不能通过算法生成明文)常用的有:MD5、SHA

Android 基础 ======================================

* Android不同分辨率适配?dip、dpi、px之间的关系?(1 英寸 = 2.54 厘米)

1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果

2. dpi:dots per inch(像素密度)(单位:像素/英寸),表示屏幕每英寸有多少个像素        

dip =(dpi/160)* pixel      

float density = context.getResources().getDisplayMetrics().density (指的就是dpi/160)      

比如4英寸、854×480的分辨率,那么dpi就是854的平方加480的平方和开2次方后除以4,结果大约是245,为hdpi。   

3. px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,不会改变。       

120  (ldpi)   低密度   (240*320)   (1dip=0.75px)      

160  (mdpi)   中密度   (320*480)   (1dip=1px)      

240  (hdpi)   高密度   (480*800)   (1dip=1.5px)      

320  (xdpi)   超高密度 (720*1280)  (1dip=2px)      

480  (xxdpi)  超清密度 (1080*1920) (1dip=3px)     

* AIDL(Android Interface Definition Language)的是什么?

“只有当你允许来自不同的客户端访问你的服务并且需要处理多线程问题时你才必须使用AIDL”

Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言来公开服务的接口。我们知道4个Android应用程序组件中的3个(Activity、BroadcastReceiver和ContentProvider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问的服务称为AIDL服务。

Activity如何与Webview交互

webview.addJavascriptInterface(new JavaScriptInterface(), "bornClient");
public class JavaScriptInterface extends WebJavaScriptInterface {
    public void finish(String param) {   finish();  }
}
<button onClick="window.bornClient.finish('param')">Close Activity</button> // html 端代码

* 如何有效的处理未捕获的异常    

继承自UncaughtExceptionHandler类,然后重载uncaughtException()函数,还可以将日志写文件存储到SD卡,发送给服务器

* 第三方库    

基础框架:RxJava + Retrofit + Dagger2 + MVP + RxBus + ButterKnife     

图片加载:Picasso ImageLoader Fresco Glide Volley    

 html.fromhtml 加载strings.xml中的资源文件

<string name="test_string">< ![CDATA[ 未绑定手机号?<font color="#0f9afc">绑定</font> ]]> </string>

AndroidStudio取消折叠代码
  Setting->Editor->General->CodeFolding->取消closures选项

AndroidStudio退出时保存打开的文件状态
  解决方案:打开AndroidStudio的project视图方式,找到工程目录下.idea/workspace.xml删除,重启AndroidStudio

使用adb shell dumpsys检测Android的Activity任务栈

adb shell dumpsys activity 输出包括intents,services,broadcasts,providers,activites等
adb shell dumpsys activity activities 指定只输出activities
adb shell dumpsys activity > d:\dumpsys.txt (输出到D:盘的文件里)

inline:在编译时把调用这个函数进行替换,而noinline依据字面意思也比较好理解。

rossinline:让被标记的lambda表达式不允许非局部返回

internal 修饰类的方法,表示这个类方法只适合当前module使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值