自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android自适应屏幕方向和大小

其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

2024-05-27 03:00:16 270

原创 Android自定义轮播效果

经过上面的分析,我们可知我们最关心的是 屏幕显示项 + 屏幕显示项两侧布局 的动画效果,他们的 position 变化我们也通过图解描述的很清楚。android:layout_marginLeft=“80dp” //写这个属性的目的是 不能让单个 ViewPager 项占满整个横屏。// 这个属性的目的 是设置 每个Item之间的距离间隔。// 这个属性的目的 是设置 每个Item之间的距离间隔。//第二步:设置 ViewPager 的一些属性。//第二步:设置 ViewPager 的一些属性。

2024-05-27 02:59:46 392

原创 Android的进程优先级与进程回收详解

2.另外,如果其他进程依赖于它的话,一个进程的等级可以提高.例如,一个A进程里的service被绑定到B进程里的组件上,进程A将总被认为至少和B进程一样重要.2按back键使得进程中的activity在后台运行而不是destory,需重载back按键(没有任何activity在运行的进程优先被杀).1.如果一个进程里面同时包含service和可视的activity,那么这个进程应该归于可视进程,而不是service进程.上面的六个数字对应的就是(MB): 6,8,16,20,22,24。

2024-05-27 02:44:45 413

原创 Android的进程优先级与进程回收详解(1)

2.另外,如果其他进程依赖于它的话,一个进程的等级可以提高.例如,一个A进程里的service被绑定到B进程里的组件上,进程A将总被认为至少和B进程一样重要.2按back键使得进程中的activity在后台运行而不是destory,需重载back按键(没有任何activity在运行的进程优先被杀).1.如果一个进程里面同时包含service和可视的activity,那么这个进程应该归于可视进程,而不是service进程.上面的六个数字对应的就是(MB): 6,8,16,20,22,24。

2024-05-27 02:44:14 372

原创 android打包apk!腾讯、字节跳动面经已发,安卓系列学习进阶视频_腾讯apk打包分发

因为一个清晰的目标,可以让你的职业成长围绕着一个点去积累经验,而这种日积月累的经验积累,也是你日后升职加薪的筹码。虽然经验并不一定与能力相关,但如果没有经验的积累,你的能力也基本没有提升的可能。书中有这样一个故事:马克西姆·文格罗夫出生在西伯利亚,4岁的时候,他接触到了第一把小提琴,展现出了过人的天赋。并且,他的天赋和敬业度是成正比的。他每天练习7小时,5岁就举办了独奏会,15岁就获得了国际大奖,34岁就成了世界顶级小提琴家。

2024-05-27 02:29:19 210

原创 Android感应检测Sensor(简单介绍)

陀螺仪的单位是弧度/秒,测量的是物体分别围绕X,Y,Z轴旋转的角速度。因为感应检测Sensor的服务是否频繁和快慢都与电池参量的消耗有关,同时也会影响处理的效率,所以兼顾到消耗电池和处理效率的平衡,设置感应检测Sensor的延迟时间是一门重要的学问,需要根据应用系统的需求来做适当的设置。旋转向量的三个要素是,这样旋转向量的大小等于sin(θ/2),旋转向量的方向等于旋转轴的方向。Accelerometer Sensor测量的是所有施加在设备上的力所产生的加速度的负值(包括重力加速度)。

2024-05-27 02:28:49 251

原创 Android开发之旅:HelloWorld项目的目录结构

通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。该文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。记录项目中所需要的环境信息,比如Android的版本等。下面将分节介绍上面的各级目录结构。

2024-05-27 02:12:43 427

原创 Android学习--Fragment

然后分别新建LeftFragmet和RightFragment两个类继承Fragment,并且重写onCreateView()方法): View?): View?最后在man.xml标签中引入Fragment布局最后运行。

2024-05-27 01:57:14 268

原创 Android字体概述

staticTypeface createFromAsset(AssetManager mgr, String path)//静态方法,参数一为AssetManager对象,主要用于从APK的assets文件夹中取出字体,参数二为相对于Android工程下 的assets文件夹中的外挂字体文件的路径。staticTypeface create(Typeface family, int style)//静态方法,参数一为字体类型这里是Typeface的静态定义,如宋体,参数二风格,如粗体,斜体。

2024-05-27 01:56:43 328

原创 Android体系与系统架构(1)

对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。Android最底层最核心的部分,Linux层包含了Android系统的核心服务,包括硬件驱动,进程管理,安全系统,等等.Android 平台的基础是 Linux 内核。

2024-05-27 00:23:43 283

原创 Android低版本上APP首次启动时间减少80%(二)

然而,在单独进程处理 OPT 和其他进程执行 install 的时候,都涉及到 DEX 和 ODEX 文件的访问和生成,因此在这些进程之间涉及到文件访问和 OPT 时,都是加文件锁互斥执行的。另外我们看到,其中有一个机型,在官方 MultiDex 下是直接崩溃,无法启动的。由于我们所有设备对于两种方案的选取是对半开的,所以理论上二者的设备数应该接近于 1 比 1,不过从图中我们可以看到,BoostMultiDex 的设备数已经大幅超过 MultiDex 的设备数,两者比例接近于 2 比 1。

2024-05-27 00:23:12 375

原创 Android-搭建简单服务端+ListView异步加载数据

上面代码已经很清楚的定义了获取服务端数据的方法,大致流程是这样的:传递一个网络路径path,通过URL打开连接,通过HttpURLConnection连接服务端,得到输入流,解析xml文件再获得数据。这里要提一下,我们看到image标签,src是图片url地址,这个地址是我PC的IP地址,读者在测试的时候需要将这个IP地址改为你的PC的IP地址,如何得到?params) {// 子线程中执行的。if(conn.getResponseCode() == 200){ //连接成功返回码200。

2024-05-27 00:06:11 390

原创 Android-必须知道2024年流行的框架库及开发语言,看这一篇就够了!

抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。,完全使用 H5 开发 App,目前已很成熟,但是体现并不很好。可以短时间内更新APP UI,适配能力超强,但是基于流量严重,但是折中方案在很多情况下是非常适合的,典型的就是淘宝微信,大部分信息展示都是通过 H5 来完成,同时通过 Hybird 方式,把 Web 和 Native 打通,提供给网页访问Native的能力。

2024-05-27 00:05:40 385

原创 Android 消息推送:个推

为了让推送服务在部分主流机型上更稳定运行,从2.9.5.0版本开始,个推支持第三方应用配置使用自定义Service来作为推送服务运行的载体。

2024-05-26 23:41:25 340

原创 Android 使用百度LBS SDK(六)轨迹回放

/ 折线线宽, 默认为 5, 单位:像素。// 折线线宽, 默认为 5, 单位:像素。可还原轨迹速度,显示轨迹时间进度,暂停播放轨迹,加速播放。------ 红虚线:起始点和终点连接直线。/** 播放状态:暂停、播放 */------ 绿虚线:轨迹趋势线。/** 播放状态控制图标 *//** 轨迹文件夹路径 *//** 当前轨迹的路径 *//** 是否播放完毕 */

2024-05-26 23:27:05 357

原创 Android 使用Okhttp3

以上是okhttp官网以及结合网上的一些理解整理出来的,看到有不对的地方还望大家多多指出下面我们就开始学习怎么使用okhttp吧。

2024-05-26 23:26:35 239

原创 Android Studio3

其实一开始不是这个错,最开始是一个redownload的一个错,后来LZ把2.3版本的给删了,缓存给清除了,然后就变成这个错了。既然有错,那就解决呗,顺手百度了一个,下面看看stackoverflow的解决方案这个方法确实也适用于我,把ButterKnife降级之后就OK了。如果有其他更好的解决方法,欢迎私信我,有偿给发红包。解决方案1:把项目中依赖的ButterKnife降级到8.4.0解决方案2:把gradle plugin版本降低至2.3.3 重新编译下就可以了第一眼看这个错的时候我以为我。

2024-05-26 23:11:39 247

原创 Android Studio 配置Git

二、安装是否成功回到电脑桌面,鼠标右击如果看到有两git单词说明安装成功三、打开android studio 打开如下路径File——Settings——Version Control——git点击test按钮如果出现 Git executed successfully 对话框说明配置成功,同时对话框会显示你安装的git版本号,如下图:四、点击按下图操作:点击“Generate…”在GitHub上输入自己的用户和密码点击“头像”——settings点击Developer settings点击Personal

2024-05-26 23:11:09 315

原创 Android Framework学习笔记(五)应用程序启动过程

这里的app.thread指的是IApplicationThread,它的实现是ActivityThread的内部类ApplicationThread,其中ApplicationThread继承了ApplicationThreadNative,而ApplicationThreadNative继承了Binder并实现了IApplicationThread接口。注释1处获取当前Activity所在的进程的ProcessRecord,如果进程已经启动了,会执行注释2处的代码。否则执行注释3的代码。

2024-05-26 22:56:17 236

原创 Android Framework学习笔记(九)Broadcast的注册、发送和接收过程

注释3处如果系统正在启动过程中,判断如果flag设置为FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT(启动检查时只接受动态注册的广播接收者)则不做处理,如果不是则在注释4处判断如果flag没有设置为FLAG_RECEIVER_REGISTERED_ONLY(只接受动态注册的广播接收者)则会抛出异常。注释1执行processNextBroadcast方法。广播有很多类型:无序广播(普通广播)、有序广播、粘性广播和APP内部广播,这里以普通广播为例,来讲解广播的发送过程。

2024-05-26 22:55:46 415

原创 Android SimpleAdapter,SimpleCursorAdapter,ArrayAdapter的区别

注意:SimpleCursorAdapter是和数据库有关的东西,而sqlite数据库所要求的 自动增长的 id 必须是 _id这中形式。//list为数据集合。//可以想成把一个放好数据的布局文件放入本界面中。

2024-05-26 22:41:26 267

原创 AMS重要的数据结构解析(一):ActivityRecord

r.setTask(targetStack.createTaskRecord(getNextTaskId(), //这里是创建一个新的Task,作为要启动的Activity所在的栈,这里有一个唯一的TaskId标识,方法是每次id++查找一遍,如果已经存在则再++查找,感觉这里效率是可以优化的。ProcessRecord _caller, //调用者的进程,与aInfo一起来决定当前Activity的应用包名。//之前都是针对栈的操作。

2024-05-26 22:40:55 322

原创 2024美国软件工程师薪酬报告,与高薪资配套的Android进阶资料_国外android 程序员

前不久,美国某科技公司发布了最新美国软件工程师薪酬报告,字节跳动高级工程师年薪约303万元,位居世界第6,这个天文数字在国内很难达到,一般程序员年薪30~50万已经是一个很好的结果。具体来看,不同岗位薪资标准又不一样,像字节内部还有着明确的职级划分。对于应届毕业生来说,基本上没有什么行业经验,只能通过实习参与过的一些项目和技术基础来进行判断。进入公司的一、两年时间内基本都是在团队内参与一些中低难度的项目开发和优化工作,也就是大家常说的拧螺丝。很多Android程序员也能拿到一万多的月薪,。

2024-05-26 22:20:44 384

原创 2024程序员必看面试指南-进大厂年薪百万需要付出多少努力?你看看你们配吗

2.如何实现一个环形布局的ViewGroup,类似一个菊花的形状。又问了在onMeasure中传递的参数是什么?这道题主要就是想了解对View的measure、layout和draw流程是否熟悉。3.android的事件传递机制4.内存泄露问题,常见的导致内存泄露的原因5.页面很卡顿,分析一下原因是什么,然后从哪些方面入手解决6.java的线程同步问题。new了很多A对象,一个线程池的线程不断去操作A对象被synchronized修饰的方法,会同步操作吗?如果该方法是static的,又会怎么样?

2024-05-26 22:20:14 419

原创 20240619-James-快速鸟瞰并发编程, 呕心沥血整理的架构技术(第2篇)

确保此引用在构造期间不逃逸。this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了。这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object)。这样就会出现某些线程中看到该对象的状态是没初始化完的状态,而在另外一些线程看到的却是已经初始化完的状态,这种不一致性是不确定的,程序也会因此而产生一些无法预知的并发错误。

2024-05-26 22:02:07 431

原创 20240619-James-快速鸟瞰并发编程, 呕心沥血整理的架构技术(第1篇)

T get() {if (value == null)//这里做了null判断, 延迟初始化的字段它不是原子的。

2024-05-26 22:01:36 390

原创 2019中级Android开发面试解答之线程篇

当需要使用多线程时,有个变量恰巧不需要共享,此时就不必使用synchronized这么麻烦的关键字来锁住,每个线程都相当于在堆内存中开辟一个空间,线程中带有对共享变量的缓冲区,通过缓冲区将堆内存中的共享变量进行读取和操作,ThreadLocal相当于线程内的内存,一个局部变量。并不会像synchronized那样修改主内存的数据,再将主内存的数据复制到线程内的工作内存。使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。

2024-05-26 21:44:03 249

原创 2017-2024历年字节跳动Android面试真题解析(累计下载1082万次,持续更新中)

刷《剑指Offer》是为了建立全面的算法面试思维,打下坚实的基础,刷LeetCode则是为了不断强化与开阔我们自己的算法思想。收集反馈的面经资料比较乱,全是针对字节跳动的面试题整理的,我们进行了分类,循序渐进,由基础到深入,由易到简。但是字节跳动2020春招依然火热,我的个人博客也收到了很多朋友的私信,让我们出字节跳动最新、最全的Android岗位面试题。今年虽然受疫情影响,大部分同行都放慢和减缓了跳槽的计划和节奏,可仍有很多年前已经辞职的朋友,这部分朋友需要面临岗位减少、空前的竞争压力和心理压力的影响。

2024-05-26 21:43:31 325

空空如也

空空如也

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

TA关注的人

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