美文网首页
春招笔记(十四)

春招笔记(十四)

作者: 松爱家的小秦 | 来源:发表于2019-03-12 17:17 被阅读0次

1.是否熟悉Android jni开发,jni如何调用java层代码

在Android开发中,使用 NDK开发的需求正逐渐增大

JNI:定义:Java Native Interface,即 Java本地接口

作用: 使得Java 与 本地其他类型语言(如C、C++)交互

即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码

为什么要有 JNI

背景:实际使用中,Java 需要与 本地代码 进行交互

问题:因为 Java 具备跨平台的特点,所以Java 与 本地代码交互的能力非常弱

解决方案: 采用 JNI特性 增强 Java 与 本地代码交互的能力

实现步骤

(1)在Java中声明Native方法(即需要调用的本地方法)

(2)编译上述 Java源文件javac(得到 .class文件)

(3)通过 javah 命令导出JNI的头文件(.h文件)

(4)使用 Java需要交互的本地代码 实现在 Java中声明的Native方法

        如 Java 需要与 C++ 交互,那么就用C++实现 Java的Native方法

(5)编译.so库文件

(6)通过Java命令执行 Java程序,最终实现Java调用本地代码

2.SurfaceView

为什么要使用SurfaceView来实现动画? 

因为View的绘图存在以下缺陷:

View缺乏双缓冲机制

当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片

新线程无法直接更新View组件

SurfaceView的绘图机制

一般会与SurfaceView结合使用

调用SurfaceView的getHolder()方法即可获得SurfaceView关联的SurfaceHolder

SurfaceHolder提供了如下方法来获取Canvas对象

Canvas lockCanvas():锁定整个SurfaceView对象,获取该Surface上的Canvas

Canvas lockCanvas(Rect dirty):锁定SurfaceView上Rect划分的区域,获取该Surface上的Canvas

unlockCanvasAndPost(canvas):释放绘图、提交所绘制的图形,需要注意,当调用SurfaceHolder上的unlockCanvasAndPost方法之后,该方法之前所绘制的图形还处于缓冲之中,下一次lockCanvas()方法锁定的区域可能会“遮挡”它

3.NDK

Native Development Kit,是 Android的一个工具开发包

NDK是属于 Android 的,与Java并无直接关系

作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK

即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互

应用场景:在Android的场景下 使用JNI

即 Android开发的功能需要本地代码(C/C++)实现

NDK与JNI的关系:

http://wiki.jikexueyuan.com/project/jni-ndk-developer-guide/overview.html

4.Retrofit2 

Retrofit是什么

简单的说它是一个基于OkHttp的RESTFUL Api请求工具,从功能上来说和Google的Volley功能上很相似,但是使用上很不相似。

Retrofit可以让你简单到调用一个Java方法的方式去请求一个api

Retrofit只要创建一个接口来描述Http请求,然后可以让我们可以像调用Java方法一样请求一个Api

Retrofit的原理

Java的动态代理

动态代理是个什么东西?

看Retrofit代码之前我知道Java动态代理是一个很重要的东西,比如在Spring框架里大量的用到,但是它有什么用呢?

Java动态代理就是给了程序员一种可能:当你要调用某个Class的方法前或后,插入你想要执行的代码

Retrofit非常巧妙的用注解来描述一个HTTP请求,将一个HTTP请求抽象成一个Java接口,然后用了Java动态代理的方式,动态的将这个接口的注解“翻译”成一个HTTP请求,最后再执行这个HTTP请求

相关文章

  • 春招笔记(十四)

    1.是否熟悉Android jni开发,jni如何调用java层代码 在Android开发中,使用NDK开发的需求...

  • 春招笔记

    Linux支持的IPC:管道,消息队列,共享内存,信号量,Socket。只有Socket支持CS模式,其他的也可以...

  • 春招笔记

    1. Parcelable和Serializable 俩者异同 1、Serializable在序列化的时候会产生...

  • 踩坑攀登者:mysql/innodb的锁、隔离与MVCC

    2020春招精选:20道JVM面试重点问题及十大模块知识点笔记! 2020春招必备:MySQL(20)与Redis...

  • 春招准备笔记

    先说一点冠冕堂皇的废话,好的目标是成功的一半。不止是春招,所有职业规划或是求职的流程都可以遵循这个套路:自我定位-...

  • 春招笔记 哈希

    1. 表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比...

  • 春招笔记 堆

    1. 堆是完全二叉树,根据父节点和子节点的关系,可以分为大根堆和小根堆。 大根堆的父节点比它的所有子节点大,小根...

  • 【备战春招/秋招系列】初出茅庐的程序员该如何准备面试?

    备战春招/秋招系列文章回顾: 【备战春招/秋招系列】程序员的简历就该这样写 这是【备战春招/秋招系列】的第二篇文章...

  • 春招

    秋招和春招是什么 9月10月份是秋招,2月4月份是春招,错过了秋招据说春招很难 当然也有人这样说: 春招应该怎么做...

  • 春招特别篇丨啥是春招?

    阅读引导: 本文核心:春招特别篇第一期,简单介绍春招相关内容。适用于参加春招的小伙伴,帮助你了解春招的时间及主要招...

网友评论

      本文标题:春招笔记(十四)

      本文链接:https://www.haomeiwen.com/subject/adynpqtx.html