自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android程序员;裸辞2个月找不到工作,我该怎么办,ndk开发入门

前几天在Android高级架构师群里有个小伙伴说了自己的近况;“3月初裸辞,找了近2个月的工作了,至今还没找到,感觉心好慌,不知道该怎么办了?”想不到一石激起千层浪,原来现在处于待业或者跳槽状态的Android程序员一大把,大家都讨论起来这个问题;裸辞多久找不到工作,心态会崩?说真的,找不到工作的时候压力很大。有人说自信会很受打击,还有人说会很绝望,是人生的低谷……尽管很多时候我们自己知道,我不是找不到工作,只是找不到理想中的好工作。但这也不能改变你的空白期正在一天一天变长,不妥协的那份坚定正在一天一

2021-11-11 00:53:30 510

原创 Android社招最全面试题,Android经典面试

用过哪些系统Service ?了解ActivityManagerService吗?发挥什么作用(重点)Broadcast Receiver基础相关广播有几种形式 ? 都有什么特点 ?广播的两种注册方式 ?广播发送和接收的原理了解吗 ?(Binder机制、AMS)ContentProvider基础相关ContentProvider了解多少?ContentProvider的权限管理?说说ContentProvider、ContentResolver、ContentObserver 之间的关系?

2021-11-11 00:49:29 213

原创 Android研发字节、腾讯等大厂面试,资深移动端工程师谈跳槽感悟

WebviewAndroid 扩展知识点汇总===========================================================================ARTApk 包体优化HookProguard架构JetpackNDK 开发类加载器性能优化知识点汇总=====================================================================启动.

2021-11-11 00:47:45 1804

原创 Android的android,字节Android高工面试

include $(CLEAR_VARS)LOCAL_MODULE:= helloworldLOCAL_SRC_FILES := helloworld.cinclude $(BUILD_SHARED_LIBRARY)我们来解释一下这几行代码:1,LOCAL_PATH := $(call my-dir) ,一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函..

2021-11-11 00:45:49 114

原创 Android用Canvas画一个折线图,并加以简单封装,安卓开发知识点

canvas.drawLine(widthCriterion,hightCriterion,widthCriterion,hightCriterion*9,p);//绘制y角canvas.drawLine(widthCriterion-minCriterion,hightCriterion+minCriterion,widthCriterion+2,hightCriterion,p);canvas.drawLine(widthCriterion,hightCriterion,widthCriterio

2021-11-11 00:44:09 1570

原创 Android权限操作之uses-permission详解,安卓binder

允许程序使用SurfaceFlinger底层特性(Allows an application to《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 免费领取useSurfaceFlinger’s low level features)android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to accessinformation a

2021-11-11 00:41:47 818

原创 android数据库加密之—sqlcipher,阿里+头条+腾讯等大厂Android面试题分享

}/**多个字段删除数据*/public void deleteData(String name, int num) {//获取写数据库SQLiteDatabase db = dbCipherHelper.getWritableDatabase(DBCipherHelper.DB_PASSWORD);// delete 操作db.delete(DBCipherHelper.TABLE_NAME, DBCipherHelper.FIELD_NAME + "=?and " + DBCiphe

2021-11-11 00:40:04 122

原创 Android手机分辨率基础知识(DPI,DIP计算),字节跳动算法工程师总结

名词解释Px(Pixel像素)不同设备显示效果相同。这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px。也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小。Screen Size(屏幕尺寸)一般所说的手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度,而不是手机面积。我们可以根据勾股定理获取手机的宽和长,当然还有面积。Resolution(分辨率)指手机屏幕垂直和水平方向上的像素个数。比如分辨率是480*320,

2021-11-11 00:37:50 5988

原创 Android性能优化案例(3)内存抖动和泄漏的优化,kotlin线程锁

在Activity的onDestroy中移除所有的任务@Overrideprotected void onDestroy() {super.onDestroy();handler.removeCallbacksAndMessages(null);//移除所有任务}使用静态内部类 + Activity弱引用的方式MyHandler handler = new MyHandler(this);private static class MyHandler extends Handl..

2021-11-11 00:35:49 1816

原创 Android-举一反三:12个View绘制流程高频面试题,带你全面理解View的绘制流程

}// If th《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 免费领取e window has already been added, but during resume// we started another activity, then don’t yet make the// window visible.} else if (!willBeVisible) {if (localLOGV) Slog.v

2021-11-09 13:21:46 393

原创 Android-Navigation的四大要点你都知道吗?,android编程基础班

页面标签主要包含navigation、fragment与actionnavigation: 定义导航栈,可以进行嵌套定义,各个navigation相互独立。它有一个属性startDestination用来定义导航栈的根入口fragmentfragment: 顾名思义fragment页面。通过name属性来定义关联的fragmentaction: 意图,可以理解为Intent,即跳转的行为。通过destination来关联将要跳转的目标fragment。以上是nav_graph.xm.

2021-11-09 13:19:41 563

原创 Android-Framework学习笔记(七)AMS全家桶,kotlin开发android

SystemServiceManager#startService()@SuppressWarnings(“unchecked”)public T startService(Class serviceClass) {try {…final T service;try {Constructor constructor = serviceClass.getConstructor(Context.class);//1service = constructor.newInstance(mConte

2021-11-09 13:17:45 277

原创 Android-APK瘦身全面总结——如何从32-6M到13-6M,面试篇

####liblib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib**.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了!###META-INFMETA-INF目录下存放

2021-11-09 13:16:01 296

原创 Android&对话框最全面的使用介绍,移动网页开发

DialogInterface.OnClickListener listener)中立按钮(随便你写啥). 这个按钮位于取消和确定中间的一个.AlertDialog.Builder setNeutralButton (CharSequence text,DialogInterface.OnClickListener listener)AlertDialog.Builder setNeutralButton (int textId,DialogInterface.OnClickListener li

2021-11-09 13:14:06 368

原创 Android 高质量开发之崩溃优化,2020-2021字节跳动Android面试真题解析

除了常见的崩溃,还有一些会导致应用异常退出的情况,例如:主动自杀。Process.killProcess()、exit() 等崩溃。出现了 Java 或 Native 崩溃系统重启。系统出现异常、断电、用户主动重启等,我们可以通过比较应用开机运行时间是否比之前记录的值更小被系统杀死。被 low memory killer 杀掉、从系统的任务管理器中划掉等ANR我们可以在应用启动的时候设定一个标志,在主动自杀或崩溃后更新标志,这样下次启动时通过检测这个标志就能确认运行期间是

2021-11-09 13:12:25 575

原创 Android 进阶路线(思维导图),Android开发实用必备的几款插件

今年的Google IO 大会上,Google 宣布Kotlin 成为Android 的官方语言,Kotlin 终于被扶正。Kotlin 顿时火遍了各个技术社区和网站,掀起了一股学习Kotlin 的热潮。一些公司已经在尝试着用kotlin 开发商业项目,虽然Java暂时不会被kotlin 取代,但是我们也应该拥抱Kotlin ,多学一门语言对我们没什么坏处。Android Studio 3.0 将支持Kotlin, 不过3.0 的正式版还没有发布,现在想学习和尝试的同学可以装一个Android Studi

2021-11-09 13:10:03 287

原创 android 自定义酷炫进度条动画,2021最新大厂Android面经

mPaint.setStyle(Paint.Style.FILL);int count = 0;while(count++ < 50) {canvas.drawCircle(centerX, centerY - outerRadius + dotRadius, dotRadius, mPaint);canvas.rotate(7.2f, centerX, centerY);}}第二部分1.绘制矩形形成的圆,原理也是一样的,只不过把绘制小蓝圆变成绘制矩形。绘制矩形需要确定左上角和右下角这

2021-11-09 13:06:07 435

原创 Android 网络传输数据之解析XML格式数据(Pull&SAX),你花了多久弄明白架构设计

BufferedReader reader = null;try{OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(“http://10.0.2.2:8023/get_data.xml”).build();Response response = client.newCall(request).execute();String responseData = response.b

2021-11-09 13:04:05 475

原创 Android - 定位方式,火星坐标系统,一键锁屏,字节Android高工面试

private class MyLocationListener implements LocationListener{//位置发生变化的时候@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stublocation.getLatitude(); //维度location.getLongitude(); //经度}//当位置提供者状态发生变化的时候,可用–&gt

2021-11-08 11:29:26 199

原创 Android - 在线浏览源码,电话短信相关,文本变化监听器

//ServiceManager获取不到,需要反射调用Class clazz = getClassLoader().loadClass(“android.os.ServiceManager”);Method method = clazz.getDeclaredMethod(“getService”, String.class);IBinder iBinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);//挂断电话需要用到AI

2021-11-08 11:27:06 102

原创 Androdid Droid Fu介绍,flutter底部弹窗

Droid-Fu 的最大优势是他提的应用生命周期帮助类。如果你正在开发一款Android应用,而它的主要任务是运行后台任务,例如从web上抓取数据,你肯定会在你的应用中使用Dr《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 免费领取oid-Fu。讨厌的AsyncTask关于此话题,我已在两篇文章讨论过。第三次,我终于找到了优雅的解决办法。我们先来看看AsyncTask的问题吧:第一,AsyncTask是什么?它是一个执行

2021-11-08 11:24:55 105

原创 Androdid Droid Fu介绍(1),万字Android技术类校招面试题汇总

Droid-Fu 的最大优势是他提的应用生命周期帮助类。如果你正在开发一款Android应用,而它的主要任务是运行后台任务,例如从web上抓取数据,你肯定会在你的应用中使用Droid-Fu。讨厌的AsyncTask关于此话题,我已在两篇文章讨论过。第三次,我终于找到了优雅的解决办法。我们先来看看AsyncTask的问题吧:第一,AsyncTask是什么?它是一个执行大开销操作的帮助类。如果你正在开发一个需要访问web服务端的手机应用,很可能你已经使用过它了。其基本思路是:发起一个异步任务,当任务线程执

2021-11-08 11:23:11 81

原创 Andriod 网络框架 OkHttp 源码解析,总结一下

除了使用上面的直接实例化一个 OkHttp 客户端的方式,我们也可以使用 OkHttpClient 的构建者 OkHttpClient.Builder 来创建 OkHttp 客户端。所以,我们可以总结:OkHttp 为不同的请求类型都提供了一个构建者方法用来创建请求体 RequestBody;因为请求体只是整个请求的一部分,所以,又要用 Request.Builder 构建一个请求对象 Request;这样我们得到了一个完整的 Http 请求,然后使用 OkHttpClient 对象进行网络访问得

2021-11-08 11:21:05 130

原创 Andorid&Kotlin编译速度原理剖析(上),lambda表达式的作用与好处

@get:Optionalabstract val versionName: Property<String?>//版本号@get:Input@get:Optionalabstractabstract val versionCode: Property<Int?>//父类NonIncrementalTask的唯一抽象方法,也就是BuildConfig的主要逻辑处理方法override fun doTaskAction() {//获取类里面的属性包括一些自定义的属性v

2021-11-08 11:19:39 268

原创 Andoird中LiveEventBus的使用——用LiveEventBus替代RxBus

autoClear(false);二、使用方法1、发送消息在需要发送消息的地方1)、//发送一条即时消息LiveEventBus.get(“key”).post(“value”);2)、//发送一条延时消息 3秒跳转LiveEventBus.get(“key”).postDelay(“value”,3000);2、接受消息,注册一个订阅在需要接受消息的地方LiveEventBus.get(“key”,String.class).observe(this, new Observer()

2021-11-08 11:17:25 285

原创 Android启动优化、布局优化必经之路—如何精准获取页面绘制时间

看一下 view.post() 方法的源码public boolean post(Runnable action) {final AttachInfo attachInfo = mAttachInfo;if (attachInfo != null) {return attachInfo.mHandler.post(action);}// Postpone the runnable until we know on which thread it needs to run.// Assume t

2021-11-07 23:28:33 388

原创 Android匿名共享内存(Ashmem)原理,全网最新

接着利用ashmem_ioctl设置共享内存的大小,static long ashmem_ioctl(struct file *file, unsigned int cmd, unsigned long arg){struct ashmem_area *asma = file->private_data;long ret = -ENOTTY;switch (cmd) {…case ASHMEM_SET_SIZE:ret = -EINVAL;if (!asma->file) {

2021-11-07 23:26:11 671

原创 Android刘海屏、水滴屏全面屏适配方案,2021年最新大厂Android面试笔试题目

// 延伸显示区域到刘海WindowManager.LayoutParams lp = window.getAttributes();lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;window.setAttributes(lp);// 设置页面全屏显示final View decorView = window.getDecorView();de

2021-11-07 23:24:21 327

原创 Android内存泄漏问题,移动端跨平台开发框架

1. 单例造成的内存泄漏单例模式是很常用的设计模式,使用单例模式只会产生一个静态对象,这个对象一直占用着内存,如果高效的使用这个单例当然是没有问题的,但是如果我们使用不当,导致大量的单例对象占用着内存,这个时候GC也不能回收,有些单例对象也不用占着那内存,就会造成内存泄漏。比如说下面一个单例模式:public class SingleInstance {private static SingleInstance sInstance;private Context mContext;private

2021-11-07 23:20:55 114

原创 Android事件分发机制五:面试官你坐啊,被面试官问的Android-Framework难倒了

那既然说到ACTION_CANCEL类型,那你可以说说还有什么事件类型吗?除了ACTION_CANCEL,其他事件类型还有:ACTION_MOVE:当我们手指在屏幕上滑动时产生此事件ACTION_UP:当我们手指抬起时产生此事件此外多指操作也比较常见:ACTION_POINTER_DOWN: 当已经有一个手指按下的情况下,另一个手指按下会产生该事件ACTION_POINTER_UP: 多个手指同时按下的情况下,抬起其中一个手指会产生该事件。.

2021-11-07 23:19:22 88

原创 Android主流三方库源码分析(一、深入理解OKHttp源码)

interceptors.add(new CallServerInterceptor(forWebSocket));Interceptor.Chain chain = new RealInterceptorChain(interceptors, null, null, null, 0,originalRequest, this, eventListener, client.connectTimeoutMillis(),client.readTimeoutMillis(), client.writeTi

2021-11-07 23:17:07 140

原创 Android中的动画效果,android界面开发

android:toXDelta="-80"android:fromYDelta=“30”android:toYDelta=“300”android:duration=“2000”/>4.rotate<?xml version="1.0" encoding="utf-8"?> <rotateandroid:interpolator="@android:anim/accelerate_decelerate_interpol..

2021-11-07 23:14:45 176

原创 Android中RelativeLayout和LinearLayout性能分析,kotlin高阶函数

LinearLayoutMeasure:0.738msLayout:0.176msdraw:7.655msRelativeLayoutMeasure:2.280msLayout:0.153msdraw:7.696ms从这个数据来看无论使用RelativeLayout还是LinearLayout,layout和draw的过程两者相差无几,考虑到误差的问题,几乎可以认为两者不分伯仲,关键是Measure的过程RelativeLayout却比LinearLayout慢了一大截。Measure都干

2021-11-07 23:12:31 120

原创 android中RecyclerView的简单使用(二)—,Android多线程实现方式及并发与同步

recyclerView.setLayoutManager(manager);recyclerView.setAdapter(adapter);recyclerView.addItemDecoration(new MyDecor(MainActivity.this, RecyclerView.VERTICAL));}}class MyAdapter extends RecyclerView.Adapter {// 声明两个属性,接收传递过来的数据private Context context;

2021-11-07 23:10:56 420

原创 Android _ 从 Dagger2 到 Hilt 玩转依赖注入(一)

public class UserRemoveDataSource {@Injectpublic UserRemoveDataSource() {}}你需要用 @Inject 注解修饰依赖项的构造方法,同时,它的依赖项 UserLocalDataSource 和 UserRemoteDataSource 也需要增加 @Inject 注解。以上代码在构建后会自动生成代码:DaggerApplicationComponent.java1、实现 ApplicationComponent 接口p.

2021-11-06 15:48:13 227

原创 Android Zygote 从何而来?揭开Android系统启动的面纱

bootloader在android系统初始化前运行,他不属于android操作系统部分。通常情况下厂商会在bootloader中做一些加密及安全相关的功能。bootloader程序分两个阶段执行。第一阶段,它检测外部RAM并加载第二阶段的辅助程序。在第二阶段,bootloader设置网络、内存等,设置内核运行参数等,即为kernel运行做准备。你可以在aosp中找到这部分代码(android版本2.xx,后面有改动),aosp/bootable/bootloader/legacy/usbloader

2021-11-06 15:45:58 164

原创 Android WebView常见问题

废话不多说,下面开始文章目录前言前言一、webview的简单使用1.load网址2.设置一些属性3.写一个监听4.返回上一次浏览的页面二、遇到的一些问题1.ERR_CLEARTEXT_NOT_PERMITTED2.便页面支持缩放3.自适应屏幕三、源码总结[](《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 免费领取https://

2021-11-06 15:44:28 289

原创 Android View 绘制流程

int size = Math.max(0, specSize - padding);int resultSize = 0;int resultMode = 0;switch (specMode) {// 父容器是精确模式的情况,设置了精确尺寸。case MeasureSpec.EXACTLY:if (childDimension >= 0) {//子元素本身是设置的精确尺寸,就是EXACTLY 模式,尺寸就是设置的尺寸。result《Android学习笔记总结+最新移动架构视频+大

2021-11-06 15:42:12 77

原创 Android VideoPlayer

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setScreenOnWhilePlaying(true);mediaPlayer.prepareAsync();attachMediaController();} catch (IOException ex) {Log.w(TAG, "Unable to open content: " + mUri, ex);return;} catch (Illega

2021-11-06 15:40:36 1127

原创 Android UI--ViewPager扩展Tab标签指示

android:layout_width=“wrap_content”android:layout_height=“wrap_content”android:layout_weight=“1.0”android:gravity=“center”android:text=“特性2”android:textSize=“18sp”/><TextViewandroid:id="@+id/tv_guid3"android:layout_width=“wrap_content”androi

2021-11-06 15:38:58 145

空空如也

空空如也

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

TA关注的人

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