
android
文章平均质量分 73
carter_yu
小白,逐渐成为大白,努力成为大牛。(^。。^)
展开
-
[问题记录]ARouter跳转失败
一、使用背景项目采用了组件化的架构,主App引用了ARouter,模块module也引用了ARouter,并且主App依赖了module。 dependencies { implementation 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' implementation project(':base') ... }二、问题在mo原创 2021-05-27 14:49:18 · 1729 阅读 · 1 评论 -
Android签名V1、V2、V3、V4汇总
目录一、什么是apk签名?二、为什么需要签名三、apk签名方案 V1 V2 V3四、apk签名校验五、多渠道打包前言消息摘要消息摘要只能保证消息的完整性,并不能保证消息的不可篡改性。消息摘要(Message Digest),又称数字摘要(Digital Digest)或数字指纹(Finger Print)。简单来说,消息摘要就是在消息数据上,执行一个...原创 2021-03-18 10:27:05 · 3892 阅读 · 0 评论 -
APK反编译和重新打包
一、反编译APK将apktool.jar和.apk放在同一个目录下,使用下面的命令反编译:格式为:java -jar apktool的名字 d(反编译) 要解包的apk -o(输出) 文件名java -jar .\apktool.jar d .\app-debug.apk -o OutFile成功后在该目录下生成一个 OutFile 的文件夹。二、修改代码例如,我们修改了 AndroidManifest.xml 文件的内容,在application标签增加了 android:deb原创 2021-02-19 15:26:08 · 3263 阅读 · 4 评论 -
AAPT: error: resource attr/** (aka com.**.app:attr/**) not found.
问题记录记录项目中的一个问题,不知什么时候,运行项目会出现这个错误:解决方法classpath ‘com.android.tools.build:gradle:3.6.2’buildscript { repositories { google() jcenter() } dependencies { //之...原创 2020-04-06 14:36:03 · 7271 阅读 · 0 评论 -
Android线程池
https://blog.youkuaiyun.com/u013293125/article/details/93163404https://blog.youkuaiyun.com/qq_39969226/article/details/88141264https://blog.youkuaiyun.com/fengyeNom1/article/details/89019890目录使用线程池的原因核心类分类执行和取消,...原创 2020-02-04 12:45:29 · 206 阅读 · 0 评论 -
Android自定义左右滑动柱状图
参考:https://www.jianshu.com/p/1595ce6aa3a7技术点记录/*** 是否可以滑动** @param direction 方位,正数:向左滑动;负数:从左向右滑动;* @return 是否可以*/@Overridepublic boolean canScrollHorizontally(int direction) { }getMeasur...原创 2020-01-19 14:59:38 · 547 阅读 · 0 评论 -
Java Lambda表达式使用及原理
目录前言Lambda 定义基本使用原理总结前言希腊字母希腊字母是希腊语所使用的字母,也广泛使用于数学、物理、生物、化学、天文等学科。希腊字母跟英文字母、俄文字母类似,只是符号不同,标音的性质是一样的。希腊字母是世界上最早有元音的字母。Lambda表达式使用了λ的英文名称。函数式接口函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但...原创 2019-12-30 09:27:12 · 636 阅读 · 0 评论 -
Android ProGuard混淆总结
目录一、前言二、ProGuard简介三、ProGuard原理分析四、ProGuard注意事项五、Android中的混淆Android开启混淆的设置ProGuard基本命令Android混淆方案实例参考一、前言编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些...原创 2019-12-13 11:42:06 · 555 阅读 · 0 评论 -
ConcurrentModificationException
ConcurrentModificationException异常的直接翻译:同时改变异常~~从字面意思可以看出:这是同一时间有两个变化发生;下面这段代码就会出现这个错误:for (Player player : playList) { if (players.get(i).getMatchPlayerId() == 1) { break; } else原创 2016-12-04 18:43:42 · 413 阅读 · 0 评论 -
Android知识架构 · 电话面试 · 组件
一提到Android组件,最先想到的自然是Android的四大组件,在面试过程中也是经常被问到的。常见问题如下:四大组件的生命周期;给出情景,判断生命周期的过程或状态;启动方式;注册方式;除了四大基本组件之外,还有很多常用到的应用组件,比如侧边栏,列表,数据库等等。。已经有很多文章对组件做了详细的介绍,这里就不在赘述,推荐几个文章供大家参考。http://www.cnblogs.com/braves原创 2016-11-23 17:44:20 · 639 阅读 · 1 评论 -
Error occurred during initialization of VM; Could not reserve enough space for 1572864KB object heap
下边是新建项目之后,提示的完整错误信息Error:Failed to complete Gradle execution.Cause:Unable to start the daemon process.This problem might be caused by incorrect configuration of the daemon.For example, an unrecogniz原创 2017-01-03 15:18:50 · 4388 阅读 · 3 评论 -
ButterKnife 空指针问题
ButterKnife 8.4.0注入失败, BindView 等操作会出现空指针。Module的 build.gradle classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’ classpath ‘com.jakewharton:butterknife-gradle-plugin:8.4.0’app的 b原创 2017-01-05 11:26:30 · 1231 阅读 · 0 评论 -
Dagger2
依赖注入就是将调用者需要的另一个对象实例不在调用者内部实现,而是通过一定的方式从外部传入实例,解决了各个类之间的耦合。那么这个外部,到底指的是哪里,如果指的是另一个类,那么,另一个类内部不就耦合了。能不能有一种方式,将这些构造的对象放到一个容器中,具体需要哪个实例时,就从这个容器中取就行了。那么,类的实例和使用就不在有联系了,而是通过一个容器将他们联系起来。实现了解耦。这个容器,便是Dag转载 2017-01-11 17:12:16 · 292 阅读 · 0 评论 -
Parcelable序列化对象(乱码问题)
记录一下遇到的一个问题:使用Parcelable序列化的时候,使用Bundle传递之后能接收到,但是会出现内容错误和乱码的问题,即传递前是id = 12; name = "小明",传递之后就变成了 id = 6723928232; name="? ?"。问题原因:使用Parcelable序列化时 read 和 write ,就是写入和读取参数的顺序错了。//写入的时候,先写event_...原创 2018-08-18 13:06:51 · 935 阅读 · 0 评论 -
Android知识架构 · 电话面试 · 性能优化和兼容性
这篇文章介绍两个问题:性能优化和兼容性。兼容性兼容性,另一种说法叫做“适配性”。下面分三部分进行介绍:屏幕适配、语言适配、系统版本适配。屏幕适配针对不同的屏幕尺寸 有4种普遍尺寸:小(small),普通(normal),大(large),超大(xlarge) 有4种普遍分辨率:低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi)为了解决屏幕大小不原创 2016-10-31 17:34:45 · 1213 阅读 · 1 评论 -
Android面试总论
作为一位Android开发人员,对知识的积累和总结是至关重要的,这篇文章的目的就是总结知识点、整理思路、深化学习。下面是两幅摘自网络的图片:第一张来自“阿东_Luck”的优快云博客,第二张来自优快云知识库。这里还总结了一些Android面试题目,参考了很多人的文章(毕竟自己还是只菜鸟),大家可以关注张先生的微信号:,还有郭先生的博客:http://blog.youkuaiyun.com/guolin_blo原创 2016-08-23 19:27:30 · 562 阅读 · 0 评论 -
Android知识架构 · 电话面试 · Android线程和进程以及安全问题
这篇文章介绍的几个问题:1 、进程和线程,以及区别 2、Android中的进程3、多线程4、线程同步5、进程间通信6、Handler、MessageQuere、Runnable、Looper一 、进程和线程,以及区别进程(Process):当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,是程序的一个运行实例。 进程是操作系统进行资源分配和调度的一个独立单位。线程(Thread)原创 2016-10-09 18:55:33 · 1146 阅读 · 0 评论 -
Android知识架构 · 电话面试 · Java的编程思想
开始之前,先叨逼叨逼这两天很受程序员关注的事情,尤其是很受移动端关注的新闻:微信小程序(应用号)开始内测了~~~~让我这个还在这里写Android面试思想,总结知识架构的屌丝凌乱在风中。有人问我,应用号推出之后,会不会打击移动开发者? 我微微一笑,很倾城:你想多了,不会再让很多人失业了,因为现在失业的已经够多了……华丽丽的分割线Java的编程思想?这个问题范围太大了,涉及到的问题也太多了,是面向对象原创 2016-09-22 21:05:36 · 2626 阅读 · 0 评论 -
Android之MVC、MVP、MVVM(Data Binding)
本文旨在记录最近总结的Android客户端架构,作为学习笔记,欢迎批评指正。一、概述MVC:Model - View - ControllerMVP: Model - View - PresenterMVVC:Model - View - ViewModel二、发展过程MVCModel:业务逻辑和实体模型;View:布局文件;Controller:Activity;在Android中View原创 2016-08-12 16:37:17 · 970 阅读 · 0 评论 -
Android知识架构 · 电话面试 · Android事件分发机制
总论在我们点击屏幕时,会有下列事件发生:Activity调用dispathTouchEvent()方法,把时间传递给Window;Window再将事件交给DecorView(DecorView是View的根布局);DecorView再传递给ViewGroup;Activity ——> Window ——> DecorView ——> ViewGroupViewGroup调用dispath原创 2016-09-13 18:51:01 · 1404 阅读 · 0 评论 -
Android知识架构 · 电话面试 · View的绘制流程
View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw()各步骤的主要工作:OnMeasure():测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure。OnLayout():确定View位置,进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步me原创 2016-09-12 21:25:35 · 5366 阅读 · 3 评论 -
GreenDao应用解析
一、概论GreenDao是一种对象关系映射(ORM)型数据库,在Android开发中使用较为广泛,比其他关系映射数据库性能更加良好。GreenDao的Github源码地址:https://github.com/greenrobot/greenDAOGreenDao的官方地址:http://greenrobot.org/greendao/Tips:国外网站存在被墙的问题,相信这不会影响大家对实现原理的原创 2016-08-16 21:54:08 · 811 阅读 · 0 评论 -
ListView选中多个item、改变背景、输入框的综合处理
简单来说,本篇文章讲解的是:1、listview中选中多个item,并改变其背景颜色;2、在listview中使用edittext获取输入;Demo效果图:主要功能:修改并保存输入框的值,选中每个item,背景色变为红色。activity代码:package com.carteryu.gala.ui.activity;import android.os.Bundle;import android.原创 2017-03-20 19:03:13 · 626 阅读 · 0 评论 -
Android知识架构·笔试·四大组件和MVC模式
Android四大组件:activity、service、content provider、 broadcast receiver1、activity数据持久化应该在 onPause() 方法中进行,而不是在 onStop() 操作。因为在内存紧张时,系统会直接结束该活动,而不经过 onStop() 。Activity栈,是一个后进先出(LIFO)的队列,其在栈中的位置决定了Activity的状原创 2017-03-14 16:00:58 · 647 阅读 · 0 评论 -
Androidx和Android support库的冲突解决(AS查看详细日志)
Android studio终端查看详细日志的方法./gradlew processDebugManifest --stacktrace或者./gradlew assembleDebug --stacktrace -infoAndroidx 和 Android support冲突原因:两种方案:1️⃣转换成Androidx;2️⃣转换成Android support方案一:1....原创 2019-09-12 13:42:13 · 1713 阅读 · 0 评论 -
handler调用链、Android打印堆栈
handler调用链MessageQueue -> Message -> Handler -> Activity 调用链。当activity关闭后,正常应该被GC回收,发现activity仍然被handler所引用,导致不能正常回收,依然占用内存,导致了内存泄漏。Android打印堆栈使用如下方法,打印出了当前的堆栈信息。public class TestActivit...原创 2019-09-09 16:00:33 · 819 阅读 · 0 评论 -
Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme
错误提示Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor.Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBarto fals...原创 2019-06-17 10:52:31 · 3250 阅读 · 0 评论 -
Android项目中的jcenter()和maven()
使用Android studio创建新项目后,project的build.gradle中会存在 repositories的依赖,如下图:apply from: "config.gradle"buildscript { repositories { google() jcenter() mavenCentral() mave...原创 2019-06-14 15:45:34 · 4174 阅读 · 0 评论 -
Kotlin 的?和!!
Kotlin有针对Java的NullPointerException管理,kotlin开发中也会有很多?和!!出现,对于初学者来说肯定很糊涂。? 表示当前对象可以为空,即可以 = null!! 表示当前对象不为空的情况下执行 /** * name 可以为空,即name = null; * 因为name有为空的可能性,所以people使用name时,需要在nam...原创 2019-05-30 17:08:09 · 20810 阅读 · 3 评论 -
TODO的用法
在android开发中,我们经常会使用TODO来标记我们的代码,一般是用来表示待完成,或者待解决的部分。本文将详细介绍一下TODO的用法,及一些相关的扩展。(本文是在别人文章上做一点编辑,出处:http://blog.youkuaiyun.com/my_truelove/article/details/72857949)一、TODO用法1.添加TODO 2.查看TODO在android ...转载 2019-05-21 17:03:14 · 45416 阅读 · 4 评论 -
记录constraint约束布局的小坑
问题描述使用Android studio新建项目,自动生成的布局最外层使用的是constraint布局。根据业务需要在里面增加了可滑动的textview和ScrollView,但是不能正常滑动。问题根源· constraint布局只能显示一页的内容。解决· 在最外层加入scrollview或NestedScrollView,对布局进行包裹。NestedScrollView的优点是自...原创 2019-04-15 13:11:21 · 487 阅读 · 0 评论 -
Java注解:@IntDef 替换 Emum
枚举(Eeum)的缺点每一个枚举值都是一个对象,在使用它时会增加额外的内存消耗,所以枚举相比与 Integer 和 String 会占用更多的内存。较多的使用 Enum 会增加 DEX 文件的大小,会造成运行时更多的开销,使我们的应用需要更多的空间。使用@IntDef代替枚举public class IntDefClass { IntDefClass(){} priva...原创 2019-04-17 11:58:28 · 2174 阅读 · 0 评论 -
(转载)ConstraintLayout布局
一、简介回忆当初稍微复杂的界面,布局的层级嵌套多层,布局最终会解析成 View 的树形结构,这对渲染性能产生了一定的影响,并且也增大了代码的维护难度。Google 工程师正是考虑到这一因素,推出了 ConstraintLayout二、ConstraintLayoutConstraintLayout 翻译为 约束布局,也有人把它称作 增强型的相对布局,由 2016 年 Google I/...转载 2019-04-10 09:11:41 · 515 阅读 · 0 评论 -
关于在Mac上使用真机进行Android程序调试的问题总结
Android Studio不能识别真机之前一直使用windows做开发,通过USB连接手机后,打开手机的USB调试模式就能进行真机测试。但是最近换到Mac上,立马不会调试,查阅了很多资料,基本的解决办法就是进行配置,但是如果是华为手机,还要进行USB的设置调整。配置usb首先确认已经安装了sdk和adb手机通过usb连接电脑打开终端输入system_profiler SPUSB...原创 2018-08-13 21:26:07 · 1673 阅读 · 0 评论 -
Android平台版本信息
Android平台版本信息原创 2018-01-04 13:58:31 · 312 阅读 · 0 评论 -
Android系统——安全——概论
本系列文章来自:https://source.android.com,仅用于学习使用。安全Android 采用了业界领先的安全功能,并与开发者和设备实现人员密切合作,以确保 Android 平台和生态系统的安全。要打造一个由基于 Android 平台以及围绕 Android 平台开发且由云服务提供支持的应用和设备组成的强大生态系统,稳定可靠的安全模型至关重要。为此,在整个开发生转载 2018-01-04 00:18:29 · 589 阅读 · 0 评论 -
Android开发问题记录-Activity的background图片无法显示
今天设置Activity的背景图片时,设置了一个.JPG格式的图片,大小为1.83M。调试时,发现背景图片无效,背景还是白色。解决办法:将图片压缩,图片太大可能导致OOM;最好使用.PNG格式,png是无损的。原创 2017-03-15 16:34:37 · 5322 阅读 · 0 评论 -
再议屏幕适配
之前对屏幕分辨率和像素的只是做过讨论,可见文章:http://blog.youkuaiyun.com/carter_yu/article/details/50421787一、Android中的屏幕知识像素:(px)每张图片都是由色点组成的,每个色点就是一个像素,像素的大小是可以变化的,所以也成为“相对长度”;相机所说的像素,实指最大像素数,如200万 = 1600 * 1200 ,像素是由相机里的光电传感器上原创 2016-08-15 15:30:31 · 502 阅读 · 0 评论 -
Android自定义字体样式(Typeface)
在移动端开发过程中,经常会用到自定义字体,那么就会涉及到今天的Typeface。textView = (TextView) convertView.findViewById(R.id.homework_list_item_score);Typeface chops = Typeface.createFromAsset(context.getAssets(),"font/texttype.TTF")原创 2016-05-08 11:29:01 · 1244 阅读 · 0 评论 -
使用SharedPreferences保存对象
使用SharedPreferences保存对象我们知道,SP可以保存像String和int这样的简单类型的数据,但不能直接保存对象。在需要保存对象的时候,就需要用到格式转换。步骤:1、将复杂数据(obj)转换为字节码;ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectOutputStream os = new ObjectOu原创 2016-04-30 17:25:36 · 845 阅读 · 0 评论