自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 Android系统启动流程(一)解析init进程启动过程,android开发者模式

init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init。本文将基于Android7.0源码来分析Init进程。2、引入init进程==============说到init进程,首先要提到Android系统启动流程的前几步:2.1、启动电源以及系统启动当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执

2021-12-24 14:47:48 758

原创 Android程序员面试必备的知识点,androidauto地图

AsyncTask是什么?AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。AsyncTask是一个抽象的泛型类,它提供了Params、Progress和Result这三个泛型参数,其中Params表示参数的类型,Progress表示后台任务的执行进度和类型,而Result则表示后台任务的返回结果的类型,如果AsyncTask不需要传递具体的参数,那么这三个泛型参数可以用Void来代替。关于线程池:AsyncTask

2021-12-24 14:43:12 1468

原创 Android的常用框架,flutter小程序开发

@OverridepublicvoidonLoadingFailed(FailReason failReason) {//加载失败的时候执行}@OverridepublicvoidonLoadingComplete(Bitmap loadedImage) {//加载成功的时候执行}@OverridepublicvoidonLoadingCancelled() {//加载取消的时候执行},newImageLoadingProgressListener() {@Overridepubl

2021-12-24 14:39:44 314

原创 Android的即时通讯(db文件无网络),建议肯定要学习,2021年Android网络编程总结篇

return getExcelFileIntent(context,filePath);} else if (end.equals(“doc”)){return getWordFileIntent(context,filePath);} else if (end.equals(“txt”)) {return getTextFileIntent(context,filePath, false);}else {return getAllIntent(context,filePath);}}/

2021-12-24 14:38:30 54

原创 iOS 开发基础,android基础教程

出于安全因素考虑,iOS严格的将各个App分别存放在文件系统的独立位置,这样的机制称为沙盒(SandBox)。这样,每一个App的文件都被安全地保管起来,别的App无法访问。App也无法对沙盒以外的文件系统,包括系统文件进行访问。在App安装过程中,系统为每个App生成它的主目录和一些关键的子目录,通常的路径为:/ApplicationRoot/ApplicationID/App包(Application Bundle)在编译App时,Xcode将它整理为一个包(Bundle)。App包是文件系

2021-12-23 14:31:30 74

原创 Http和https的理解,http1,移动手机app开发

HTTP超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。多了一个安全层即是

2021-12-23 14:30:08 2006

原创 HIGH高频H3(21-31),写的太详细了

输入:head = []输出:[]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。大家都喜欢用的归并排序(事实上是对链表排序的最佳方案)class Solution {public ListNode sortList(ListNode head) {return mergeSort(head);}// 归并排序private..

2021-12-23 14:26:34 31

原创 Hexo博客开发之——部署到Coding上,kotlin协程和线程

之前将博客部署到了Github上,但是由于网络的原因导致网站有时候无法访问,这时候的解决办法是将博客部署到两个服务器上,国外访问时使用Github上的项目,国内访问时使用本文介绍的Coding上二 列表hexo博客代码coding三 配置SSH查看C:\Users\用户名\下有没有.ssh文件夹(如果有,id_rsa.pub是要设置的)如果没有,执行下面的指令生成SSHssh-keygen -t rsa -C “你的邮箱”接下来几步中系统会要你输入密码 ( 注

2021-12-23 14:25:30 1713

原创 Handler 源码机制,android数据存储实验报告

public static @Nullable Looper myLooper() {return sThreadLocal.get();}所以每个线程所对应的Looper对象都是不同的,那么通过什么方式设置的呢?答案是 prepare() 方法。public static void prepare() {prepare(true);}private static void prepare(boolean quitAllowed) {//如果已经设置过,那么就报错,如果没有,就设置if (

2021-12-23 14:24:19 86

原创 Groovy 动态面向对象复盘总结,统统都会

}}//隐式构造MetaCreater c = [‘c’, ‘c-c’]组织类和脚本Groovy 类在字节码级别就是 Java 类,所以 Groovy 对象在内存中就是 Java 对象,在源代码级别 Groovy 类和对象处理几乎是 Java 语法的一个超集,只有嵌套类是一个例外,当前 Groovy 语法还不支持嵌套类,并且在数组的定义上有微小的改变。文件和类的关系如果一个 groovy 文件不包括类声明,那么它被作为一个脚本处理。即包装成继承 Script 类实现,自动生成的类的名称与

2021-12-23 14:22:04 958

原创 google vr 入门之VrPanoramaView制作全景图列表,斗鱼Android开发二面被刷

xmlns:tools=“http://schemas.android.com/tools”android:id="@+id/activity_main"android:layout_width=“match_parent”android:layout_height=“match_parent”tools:context=“com.qj.vrpanoramaviewlist.MainActivity”><android.support.v7.widget.RecyclerViewan

2021-12-23 14:20:49 825

原创 Android进阶:用最详细的方式解析Android消息机制的源码

使用handler最简单的方式:直接new一个Handler的对象Handler handler = new Handler();所以我们来看看它的构造函数的源码:public Handler() {this(null, false);}public Handler(Callback callback, boolean async) {if (FIND_POTENTIAL_LEAKS) {final Class<? extends Handler> klass = getClas

2021-12-22 14:44:39 38

原创 android进阶篇04、MVC、MVP,作为一个Android程序员

这里我们对汽车就是采取的开放封闭原则,轿车通过继承汽车扩展功能,并且没有修改基类汽车;3、依赖倒置原则高层模块不应依赖底层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象;本例中我们的汽车类是实现了公路接口,也就是依赖于抽象;公路接口就是一个抽象;4、接口隔离原则一个类对另一个类的依赖应该建立在最小的接口上;我们这里汽车实现了公路和人两个接口,每个接口都负责特有的方面,即接口隔离;5、里氏替换原则所有引用基类的地方必须能透明的使用其子类的对象;本例中所有需要汽车的地方,

2021-12-22 14:43:14 44

原创 Android记录7--开发时会用到显示时间的知识点,Android从入门到精通

| G | Era 标志符 | Text | AD || y | 年 | Year | 1996; 96 || M | 年中的月份 | Month | July; Jul; 07 || w | 年中的周数 | Number | 27 || W | 月份中的周数 | Number | 2 || D | 年中的天数 | Number | 189 || d | 月份中的天数 | Number | 10 || F | 月份中的星期 | Number | 2 || E | 星期中的天数 | Text

2021-12-22 14:38:58 188

原创 Android记录25-WebView实现离线缓存阅读,秀出天际

如果我们手机有root的权限的话,就可以看到/data/data/package_name/下的文件目录,我们就会发现webview为我们创建app_webview,这个应该就是webview的缓存目录的位置。public void initWebView() {mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);// 建议缓.

2021-12-22 14:37:33 94

原创 android解决AlarmManager警报器计时不准,在手机灭屏后延迟的问题

最近使用AlarmManager的闹钟开发一个提醒业务,在模拟器上测试没有问题,低版本(android6.0以下)的手机上也没有问题,但在android11版本的手机上就出现了“灭屏后延迟的问题”,大概延迟2-5分钟。具体原因是:google为了缓解Android手机饱受诟病的耗电问题,在6.0版本引入了新的省电机制Doze模式,在android6.0之后,如果想继续保持AlarmManager在手机处于所谓Doze模式时仍然能够被即时响应,则需要使用AlarmManager新提供的两个方法setAndAl

2021-12-22 14:36:07 778

原创 Android自定义露一手,轻松实现View 3D 翻转效果,2021年大厂程序员进阶宝典

private AnimationUpdateListener updateListener;private int mWidth;public AnimationUpdateListener getUpdateListener() {return updateListener;}public void setUpdateListener(AnimationUpdateListener updateListener) {this.updateListener = updateListener;

2021-12-22 14:34:42 497

原创 Android自定义控件进阶篇,自定义LayoutManager,项目实践

添加 通过addView方法把子View添加进ViewGroup或直接在xml中直接添加;测量 重写onMeasure方法并在这里决定自身尺寸以及每一个子View大小;布局 重写onLayout方法,在里面调用子View的layout方法来确定它的位置和尺寸;其实在自定义LayoutManager中,在流程上也是差不多的,我们需要重写onLayoutChildren方法,这个方法会在初始化或者Adapter数据集更新时回调,在这方法里面,需要做以下事情:进行布局之前,我们需要调用detachA.

2021-12-22 14:33:17 104

原创 Android自定义控件开发入门与实战(17)手势检测,学生会面试题选择题

private class gestureListener implements GestureDetector.OnGestureListener{@Overridepublic boolean onDown(MotionEvent e) {return false;}@Overridepublic void onShowPress(MotionEvent e) {}@Overridepublic boolean onSingleTapUp(MotionEvent e) {return

2021-12-22 14:31:52 41

原创 JavaPoet动态生成代码,安卓常见面试题

67891011121314151612345678910111213141516四、源码浅析下面来看看调用了JavaFile的writeTo后实际做了些什么。public void writeTo(Appendable out) throws IOException { // First pass: emit the entire cl..

2021-12-20 18:05:18 75

原创 Java 总结:各种排序算法的介绍及其之间的对比差异,安卓系统开发平台

printArray("选择排序结果: ", a);}五、堆排序基本思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义:具有n个元素的序列 (h1,h2,…,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1) (i=1,2,…,n/2)时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的

2021-12-20 18:03:13 169

原创 Java 8系列之重新认识HashMap,2021Android面试总结

Node是HashMap的一个内部类,实现了Map.Entry接口,本质是就是一个映射(键值对)。上图中的每个黑色圆点就是一个Node对象。(2) HashMap就是使用哈希表来存储的。哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题,Java中HashMap采用了链地址法。链地址法,简单来说,就是数组加链表的结合。在每个数组元素上都一个链表结构,当数据被Hash后,得到数组下标,把数据放在对应下标元素的链表上。例如程序执行下面代码:map.put(“美团”,“小美”);系统将调用"美团"这

2021-12-20 18:01:41 59

原创 Http与TCP区别,来看看移动端小程序技术的前世今生

TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。 所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个

2021-12-20 17:56:43 55

原创 Http与TCP区别(1),组件是如何通信的

随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次tcp连接就显得低效了。因此Keep-Alive被提出用来解决效率低的问题。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间

2021-12-20 17:55:02 40

原创 hook(3)实现无清单启动Activity,2021Android最新大厂面试真题总结

#####四. 最终效果#Demo地址https://github.com/18598925736/ActivityHookDemo/tree/startActivityWithoutRegiste#正文提示:本文所有源码索引图,都基于SDK 28 -android9.0系统.##一.整体思路在之前Activity启动流程的hook的Demo里,我进行了Activity流程的hook,最终采用的方案,是Hook了AMS,实现了全局的startActivity动作的劫持. 现在就从这个A.

2021-12-20 17:53:22 78

原创 NDK开发(六),深入理解kotlin协程pdf

System.loadLibrary(“postproc-53”);System.loadLibrary(“avfilter-5”);System.loadLibrary(“avdevice-56”);}}/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_qufu_ffmpeg_player_utils_VideoUtils */#ifndef

2021-12-19 18:34:39 305

原创 NDK开发(五),阿里P7级别面试经验总结

Ubuntu 14.0 amd64 (64bit)FFmpeg(tag:n2.6.9)ndk-r15c配置主机并使用Xshell、Xftp连接主机XShell:https://www.netsarang.com/zh/free-for-home-school/Xftp:https://www.netsarang.com/zh/free-for-home-school/上传NDK、FFmpeg创建NDK目录和FFmpeg目录cd usrmkdir ndk (创建NDK目录)mk

2021-12-19 18:32:40 353

原创 MFlowLayout标签,BTAJ面试有关散列(哈希)表的面试题详解

import android.view.ViewGroup;import java.util.ArrayList;import java.util.List;/**Created by Administrator on 2017/5/17.*/public class MFlowLayout extends ViewGroup{public MFlowLayout(Context context, AttributeSet attrs){super(context, attrs);

2021-12-19 18:30:31 20

原创 Meterial Design常见控件的使用(一),retrofit使用

<android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width=“match_parent”android:layout_height="?attr/actionBarSize"android:background="@color/colorAccent"app:logo="@mipmap/ic_launcher"app:navigationContentDescription=""app:.

2021-12-19 18:28:53 32

原创 Linux平台上直接运行Android应用,android开发入门与实战体验

当然选择同意了下一步下一步很快安装成功安装体验和大多数Windows平台的应用一致。不过最好安装之前更新一下系统,不然安装过程中也会执行的,偶尔还会出错。####安装过程中偶尔也会出错####先更新系统再安装安装完成后打开,主界面就是一个应用商城,内置了日历、计算器、电子邮件和时钟,这4个应用。####默认自带的app可以直接打开,或者使用鼠标右键选择横屏启动或者竖屏启动。第一次打开app会比较慢,估计是先启动模拟器吧。之后再打开任何app都是很快了。体验了一下qq、微.

2021-12-19 18:26:34 1149

原创 Linux之X11+OpenGL+EGL绘制(二十),这些面试官常问的开发面试题你都掌握好了吗

atan(pos.y,pos.x) - phase ); \} \";// handle to the shadervoid print_shader_info_log (GLuint shader){GLint length;glGetShaderiv ( shader , GL_INFO_LOG_LENGTH , &length );if ( length.

2021-12-19 18:24:57 160

原创 Linux之wayland+OpenGL+EGL绘制(十九),思维导图+源代码+笔记+项目

static EGLDisplay egl_display;static char running = 1;struct window {EGLContext egl_context;struct wl_surface *surface;struct wl_shell_surface *shell_surface;struct wl_egl_window *egl_window;EGLSurface egl_surface;};// listenersstatic void regist

2021-12-19 18:22:52 413

原创 linux 下 android studio 不能输入中文记录,kotlin数组全排列

# ---------------------------------------------------------------------export XMODIFIERS="@im=fcitx"export GTK_IM_MODULE=“fcitx”export QT_IM_MODULE=“fcitx”message(){TITLE=“Cannot start Android Studio”if [ -n “`which zenity`” ]; thenzenity --error

2021-12-19 18:21:20 314

原创 LinearLayout源码详解,android开发流程框架

if (useExcessSpace) {// 满足这两个条件,意味着父类即LinearLayout是wrap_content,或者mode为UNSPECIFIED// 那么此时将当前子控件的高度置为wrap_content// 为何需要这么做,主要是因为当父类为wrap_content时,其大小实际上由子控件控制// 我们都知道,自定义控件的时候,通常我们会指定测量模式为wrap_content时的默认大小// 这里强制给定为wrap_content为的就是防止子控件高度为0.// The h

2021-12-19 18:19:28 94

原创 十大Intellij IDEA快捷键,移动app开发

转自:https://blog.csdn.net/dc_726/article/details/42784275Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱,想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键,这次就按照我日常开发时的使用频率,简单分类列一下我最喜欢的十大快捷-神-键吧。1 智能提示Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有更智

2021-12-17 21:49:53 83

原创 十余年Android开发分享:Android 开发现状与未来,安卓编程软件

无论是多个Activity还是多个Fragment,都不存在原罪,本质上都是为了提供丰富灵活的视觉交互。区别在于,作为实现者你能否熟练掌控内存更加友好同时也更难驾驭的Fragment**,以达到Activity一样甚至更佳的表现。**Security====================================================================安全性是个容易被忽略的需求,但是在未来将会越来越受重要。Security是Jetpack提供的可用于SharedPref

2021-12-17 21:48:14 282

原创 十代思域带来的感受,Android高级工程师必备知识

动力基本秒同级车,1.5T版本,170匹马力,百公里加速7秒多,基本上别的车只能看车尾灯空间非常不错,紧凑型车基本上算无敌了,本田的空间利用率超高操控还不错,油耗表现非常不错,如果跑高速,油耗能降到7点多配置这种级别的车已经很满意了,炫酷的仪表盘、中控液晶屏、一键启动、远程启动,自带天窗等一些槽点:毕竟一分钱一分货,向来本来都是以买发动机送车著称,这款涡轮增压的发动机确实非常惊艳,但内饰塑料感比较强,座椅采用的是织布的,但坐起来还是比较舒服的,还有漆薄,容易刮花《Andro..

2021-12-17 21:46:27 220

原创 初级过剩,高级紧缺?面对这个局,移动开发工程师薪酬

同样,不管任何行业、岗位,技术过硬的也都是非常吃香的!说到底,是Android凉了吗?其实并不是行业凉了,而是你技术不够凉了!技术不过硬,就算转去Java、大数据、人工智能,还是会问出类似的问题:“Java凉了?Java前景如何?”“大数据凉了?大数据前景如何?”“人工智能凉了?人工智能前景如何?”……身边有很多朋友都会问到:1、Android开发如何啊?2、感觉前景不太乐观啊?3、现在人工智能热度很火,是不是换这个会好一些?是坚守还是转行?个人觉得,首

2021-12-17 21:44:11 873

原创 关于QPS高并发,你了解多少?,掌握这些Android开发热门前沿知识

上述计算结果,1秒钟可以处理完5万的请求,系统似乎看起来很强大,但实际情况并没有这么理想,在高并发的实际场景下,服务器都是处于高负载的状态,在这种状态下,平均响应时间也会被大大增加。一个高配置的至强处理器能支持的最大并发连接是1 ~ 2万,如果访问量超过2万那么就需要更高性能的服务器才能解决,如果服务器硬件不给力,软件怎么优化都是于事无补的。就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,必然会直接导致平均响应时间增加。假设我们的web系统在

2021-12-17 21:40:16 698

原创 关于build,【原理+实战+视频+源码

如填写的是**21,代表是将android-21目录下得android.jar**参与apk的编译如果你的compileSdkVersion设置成了**21,但是想要使用一个API23才出现的方法,这是不可行的,必须把compileSdkVersion设置成23**或以上buildToolsVersionbuildToolsVersion 只是的是build工具的版本号。一般每一个android版本都会有对应的buildTools。Android系统在不断升级,每次添加新特性,就需要..

2021-12-17 21:38:03 252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除