Android开发
文章平均质量分 67
互联网大喇叭
公众号「互联网大喇叭」,欢迎关注
展开
-
都9102年了,Android 冷启动优化还是只会老三样吗
性能优化一直都是一个 Android 开发者逃不过的话题,启动优化则更是重中之重。启动速度可以直接影响一个 App 的留存率和转化率,没有人会希望自己点击之后还要等一会才打开。但是当我一番调研后发现,网上大部分启动优化相关的文章,套路都差不多,我称之为老三样。什么是老三样?将启动页主题背景设置成闪屏页图片这么做的目的主要是为了消除启动时的黑白屏,给用户一种秒响应的感觉,但是并不会真正...原创 2019-10-16 09:11:33 · 347 阅读 · 0 评论 -
在android studio中,使用getAssets获取文件的问题
今天写了一个拷贝数据库的函数,但是怎么都在文件夹下看不到数据库,后来发现是获取不到资源文件,在Android studio下, assets文件夹应该放在跟java和res同级目录下欢迎关注公众号「后知后jue」,微信搜索关注回复「1024」,你懂的!...原创 2015-08-29 10:42:20 · 7009 阅读 · 0 评论 -
用TabLayout实现底部导航栏
效果图 有点大 没弄好下面我们来实现这个效果1、在app的build.gradle中添加这行 compile 'com.android.support:design:24.0.0'然后看我的布局文件 main.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xm...原创 2017-02-24 14:59:54 · 1108 阅读 · 0 评论 -
Android 单元测试---重构的前提
前言终于着手写单元测试系列文章,这也将是我着手写系列文章的第一篇。 之所以决定用单元测试作为系列文章第一篇,是因为最近才捡起来写文章的习惯,并且现在公司也开始重视起了单元测试,了解一番后发现单元测试真是个好东西,随着时间积累下来更是会方便你我他,重构代码不担心,新人接手也可以借助单元测试了解逻辑。 那么为什么直到今天,编写单元测试仍然没有那么普及呢? 我认为主要的原因就是决策...原创 2018-05-17 23:13:35 · 373 阅读 · 0 评论 -
Android 自定义View 在 XML文件中使用脱坑
本文主要是针对自定义 View 在 XML 中使用时,出现的 android.view.InflateException :Error inflating class xxx解决这个问题,首先要做的不是谷歌百度,最先该做的是打开的 logcat 面板,搜索自定义 View 的类名,查看异常日志。 如果在异常日志中发现这样一行异常代码java.lang.NoSuchMethodEx...原创 2018-05-15 07:57:56 · 1650 阅读 · 2 评论 -
Android单元测试---常见问题和套路
前言最近开始给公司的项目写单元测试,先从已经抽离成库的类开始写,因为不会涉及到界面,所以目前写起来较为容易。 单元测试框架采用的是 powerMock 框架,不过在写的过程中,发现了一些问题,今天我们就说一下一些常见的问题,和对某些类型代码常见的套路(针对这种类型应该如何编写单元测试用例)。 常见问题1、android 类方法调用为空,Method isEmpty ...原创 2018-06-05 23:43:22 · 1014 阅读 · 0 评论 -
EventBus 流程解析
先介绍控件使用方法,然后再从基本的使用方法断点调试,整体了解一下流程。## EventBus 基本使用在 module 的 build.gradle添加implementation 'org.greenrobot:eventbus:3.1.1'在接收消息的地方注册 eventBusEventBus.getDefault().register(this);然后创建一个事件类pub...原创 2019-01-02 15:39:38 · 508 阅读 · 0 评论 -
互联网寒冬中的跳槽指南
前一阵换工作了,从自媒体公司换到了做手机的公司。这次跳槽算不上跳到更好的公司,不过薪资 Double 后,勉强达到正常水平。介绍一下自身情况:码农,毕业两年多,三流本科,一段小厂两段大厂工作经历。从过往的经历中可以提出几个中肯的意见:1、关于毕业后第一份工作选择如果有机会,选择大厂这点对于初入职场非常重要,至少对于大部分行业来说,第一份工作能进大厂就进大厂。大厂带来的好处有很多,最直观的价值就...原创 2019-09-10 23:26:13 · 575 阅读 · 0 评论 -
这几点职场误区,越早知道越好
也许你正处于职场,但是做的并不开心,总觉得所有人都在跟你作对;也许你对待工作很认真,每天勤勤恳恳,任劳任怨,但boss还是指责你工作不负责;你不明白为什么自己的努力别人看不到。抱怨同事排挤,抱怨领导SB,抱怨公司无法施展自己的才能,甚至抱怨这个糟糕的社会……上次说了如何有准备的跳槽,以及一些跳槽禁忌。今天就接着谈谈关于跳槽后,在职场容易产生的几点误区,也许能...原创 2019-09-19 22:22:42 · 324 阅读 · 0 评论 -
三流大学毕业的我,如何一年内进入大公司
先做下自我介绍,两年前毕业于一个三流本科,计算机专业,实习在某小公司。随后毕业来到北京的一个创业公司,半年后成功进入一家大厂做 Android 开发,最近又换了一个大厂。确实没啥牛逼的经历,不过牛逼的经历也不一定适合每个人。就像制定方案一样,合适才是重要的,总不能说你们产品日活1000,结果整天谈淘宝微信的方案是是如何厉害。说个残酷的事实:三流大学毕业直接进大厂的机会非常小。首先校招,大...原创 2019-09-23 15:09:47 · 665 阅读 · 0 评论 -
Android的消息机制(Handler、Looper、MessageQueue)
注:本文源码基于Android7.0 先大概概括一下消息机制:这里有三个角色,Handler、looper、MessageQueue。Handler负责发消息和处理消息,Looper负责从MessageQueue中取出消息给Handler处理,MessageQueue则负责存储Handler发过来的消息。这个机制主要是将一个任务切换到指定线程中执行,就像我们在子线程中更新UI界面,...原创 2017-02-09 15:26:22 · 448 阅读 · 0 评论 -
Android中的动态加载(简单实现)
先说明一点,这篇文章说的动态加载,只能加载dex文件中的功能,涉及到资源的就不可以了。 动态加载步骤 1、在宿主程序中写插件接口2、在插件中实现宿主程序的接口这里要注意,插件接口的包名要和宿主程序中的一样。3、将插件打包成dex文件,注意不能讲宿主接口打包,否则在调用时会出错。打包这里先将实现类打成jar包,不会在Android studio上打ja...原创 2016-08-25 11:43:01 · 1497 阅读 · 0 评论 -
安卓在子线程中如何修改ui界面
1. Android进程一个应用程序被启动时,系统默认创建执行一个叫做"main"的线程。这个线程也是你的应用与界面工具包(android.widget和android.view包中的组件)交互的地方。于是main线程也被称为界面线程。这种单线程的模式会带来低性能,除非你能正确的优化你的程序。打 个比方:用户触摸屏幕上的一个按钮时的点击事件即向线程中派发事件,比如每一个事件为一辆车。而...原创 2015-08-19 09:07:11 · 7500 阅读 · 0 评论 -
安卓两个活动间传递数据
创建一个Activity叫FirstActivity 再创建一个Activity叫SecondActivity 在FristActivity中添加一个Button用来跳转到SecondActivity 假设我们想给SecondActivity传一个字符串,那我们就可以在Button的点击事件中这样写Intent intent = new Intent(First...原创 2015-10-15 10:02:18 · 3038 阅读 · 2 评论 -
android studio 数据库相关操作
我们以手机号黑名单数据库为例,演示一下安卓关于数据库的操作1、添加操作//得到数据库的路径 public static final String PATH = "data/data/com.project.qizai.safeassitant/files/blackNumber.db"; public boolean add(String number, St...原创 2015-10-13 11:23:34 · 5441 阅读 · 0 评论 -
android 自定义控件
自定义控件分为两种1组合控件:将系统原生控件组合起来加上动画效果,形成一种特殊的动画效果。2完全自定义控件,继承自系统的View,自己去实现View效果RotateAnimation参数含义fromDegrees 从哪个角度开始旋转toDegrees 到哪个角度结束pivotXType X轴以什么为参考pivotXValue x轴以哪里为中心,是一个0~1的浮点数pivot原创 2016-01-17 20:04:53 · 581 阅读 · 0 评论 -
Android 用Handler传递基本数据
假设在一个线程中,我们从网络获取Json数据,由于无法直接传递,所以这里通过Handler来传递一下数据.public void onSuccess(int i, String json) { Log.i("Channel", "onSuccess"); Message message = Message.obtain(原创 2016-03-17 09:56:04 · 4648 阅读 · 0 评论 -
Android 6.0 新特性(官方文档翻译)
Android 6.0 的变化(Android 6.0 Changes)随着新的特性和功能,Android 6.0 (API level 23), 系统和API的行为发生了很多改变。本文强调一些关键的变化,你应该在你的程序中考虑和理解。 如果你有以前发布的Android应用程序,请注意,这些变化在这个版本上会对你的应用程序有影响。运行时权限(Runtime Permissions)这个版本引入了一翻译 2016-03-09 15:40:44 · 2615 阅读 · 3 评论 -
Android 利用Messenger进行跨进程通信
Messenger通信原理Messenger其实是谷歌对aidl进行的封装,用来处理简单的跨进程通信。那么如何用Messenger传递信息呢?单向通信现在假设我们有服务端和客户端,并且服务端与客户端不在同一进程中。 首先服务端需要创建一个Handler用来接收客户端发送来的消息,然后利用这个handler,来构造一个Messenger,并且在onBind方法中将messen...原创 2016-08-03 17:26:06 · 636 阅读 · 2 评论 -
记录一次Android内存泄漏事件和解决过程
昨天打算在车机上测一下长时间跑LogWatcher会不会出问题,跑了一上午之后果然出问题了,程序发生了ANR,然后就在Android studio上看了看程序占用的内存,我靠,居然占用了一百多M,这还了得。我当时掐指一算,肯定是发生了内存泄漏。随后我便重新运行了程序,然后一直观察程序的内存变化。果然让我发现了端倪,程序GC的频率很高,并且每一次GC之后,程序占用的内存都会有小的增幅。这...原创 2016-07-28 15:35:53 · 1096 阅读 · 0 评论 -
用Android Studio将library手动打成jar包
我们以这个library为例,我们要将com.halewang.library目录下的内容打成jar包 首先我们要执行make project 执行完之后我们打开如下图所示的目录即可看到cl...原创 2016-08-19 16:07:44 · 3209 阅读 · 1 评论 -
安卓 android studio导入第三方jar包和so库
导入第三方jar包以百度地图为例, 首先我们找到下载的jar包,然后复制然后回到你的android studio项目界面选择Project视图 打开app->libs然后粘贴,但是还不能识别, 我们还需要一步,单击jar包,右键Add As Library”即可 导入so库 打开app->src->main,在main新建个文件夹叫做jn...原创 2015-07-28 14:52:36 · 1156 阅读 · 0 评论