- 博客(372)
- 资源 (64)
- 收藏
- 关注

转载 Android面试题
1.ListView的优化策略和原理参考ListView优化2.Activity和Fragment的生命周期Activity和Fragment的生命周期3.View和ViewGroup的关系View和ViewGroup的组合模式Android的UI界面都是View和ViewGroup及其子类组合而成的。View是所有UI组件的父类,其子类称为组件(Widget);ViewGroup是布局管理器,本...
2018-01-06 19:08:17
626
原创 Android热修复手动实现
前言热修复,简单的说就是在不重新下载安装app的情况下,自动修复现有app的问题,今天来做一个简单的实现。效果图点击TEST我们执行下面的方法 public void test(View view) { TestCaculate testCaculate = new TestCaculate(); testCaculate.caculate(this); }...
2018-06-22 11:04:32
1009
原创 如何通过adb命令查看data目录下的文件
前言最近在做ANR的检测的时候,需要查看产生的log信息,我们都知道产生的文件再data/anr/trace.txt里,但是如何通过命令来查看呢?今天记录一下步骤。步骤1.手机需要先root,我的手机是魅蓝note52.root成功以后执行adb shell,然后通过su命令获取权限,如果看到$符号变为#的话,说明我们就有权限查看目录中的文件了3.ls -al列出所有的目录,然后我们依次进入到da...
2018-06-14 09:37:09
52875
2
原创 App优化总结
启动加速方向利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;避免在启动时做密集沉重的初始化(Heavy app initialization);定位问题:避免I/O操作、反序列化、网络操作、布局嵌套等。方向一为启动的Activity设置一个主题,指定android:windowBackground属性<style name="Launcher"> ...
2018-05-15 16:04:36
587
原创 Android布局优化ViewStub源码分析
前言关于布局优化的内容之前总结过一篇,可以移步Android布局优化总结,今天我们从源码的角度来分析一下ViewStub是如何实现的。源码分析@RemoteViewpublic final class ViewStub extends View { private int mInflatedId; // 被填充View的id private int mLayo...
2018-05-15 11:39:05
394
原创 手写ButterKnife
前言ButterKnife是一个依赖注入框架,8.0之前是通过反射的方式实现,具体实现可以参考这篇文章自定义注解,今天我们来看下8.0之后的编译时注解实现方式,编译时注解相比运行时注解效率高,是通过在编译时生成代码的方式来绑定控件。结构app:我们的Android项目butterknife-annotation:java library,定义注解butterknife...
2018-05-13 15:29:41
709
原创 Android面试题总结
1.String转化为Integer的Integer.valueOf方法public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); }先通过parseInt方法把String转化为int类型,有个格式检查publ...
2018-05-03 17:52:41
278
原创 内存泄漏总结
垃圾回收垃圾回收机制可以作为Gc Root引用的点的是JavaStack中引用的对象方法区中静态引用指向的对象方法区中常量引用指向的对象Native方法中JNI引用的对象确定是否存在内存泄漏查看Android Profile ,点击Dump Java Heap,然后我们就可以在下面的区域看到每个对象所占有的内存情况如果想对结果进行过滤,可以点击右侧的Filter,例如我们想查看我们应用的内存情况,...
2018-04-16 09:04:37
1477
原创 百度地图使用总结
前言这篇文章总结一下项目开发过程中,百度地图使用到的一些东西1.封装定位管理类/** * 定位管理 */public class LocationManager { private static LocationManager mInstance; private LocationClient mLocationClient; private LocationCli...
2018-04-05 10:34:35
489
原创 项目学习资料
概述从今天开始总结一下,项目中学到的一些东西,方便学习。1.避免从从安装页面打开app后退出后台,再点击桌面icon,多出一个任务栈在启动页的onCreate方法中做判断 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...
2018-03-21 15:03:41
386
原创 Android实现WebView和Js交互
概述今天来看看WebView和Js的交互功能如何实现效果图代码首先我们需要准备一个html文件,放在assets目录中,方便我们从代码中加载,html的代码如下<html> <head> <title>WebView和Js交互</title> <script type="text/javascript"&...
2018-03-14 19:06:23
567
原创 Android面试题
1.Activity启动模式如何查看当前的Activity栈以及Activity栈中的Activity信息adb shell dumpsys activity activities结果如下一般会有两个Stack,Stack#0代表Launcher所在的Activity另外的一个Stack就是我们自己的ActivityTask代表一个任务栈,如果有多个任务栈,会有多个TaskHist代表任务栈中某个...
2018-03-08 15:00:21
494
原创 View的post方法执行的时机
概述View的post方法我一般用来在Activity的onCreate方法中获取View的尺寸,那么为什么在这里面能够正常获取到,它的执行时机又是什么时候,今天来分析一下。首先把自定义View添加到布局文件中<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.and...
2018-03-02 17:24:37
3112
原创 如何判断ListView的某个条目是否滑出了屏幕
public class MainActivity extends AppCompatActivity { private List<String> data = new ArrayList<>(); private ListView listView; private int mPosition; @Override protec...
2018-03-01 15:10:41
3536
原创 java.util.concurrent.RejectedExecutionException异常发生的时机
概述在线程池的使用过程中,我们有时候会遇到下面的异常那么什么时候会发生这个异常呢1.线程池关闭以后,再次提交任务2.提交线程的数量大于最大线程数+任务队列中排队的个数接下来我们模拟一下情况一 ExecutorService service = Executors.newCachedThreadPool(); //执行下面的会发生RejectedExecutionExce...
2018-02-28 18:06:52
3561
1
原创 实现字符串反转
今天来看看如何实现字符串反转,比如输入Game is Over,输出Over is Gamepublic class Question { public static void main(String[] args) { String str = "Game is over adfd aaaa cccc"; System.out.println("=====...
2018-02-28 17:58:14
437
原创 Android开发艺术探索读书笔记(第12章 Bitmap的加载和Cache)
BitmapBitmap占用的内存大小可以通过下面的API获取 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher); int byteCount = bitmap.getByteCount(); int allocationByteCount = bitm...
2018-02-26 13:26:08
449
原创 Android中注解的分类
前言注解我们可以分为两类,运行时注解和编译时注解,今天我们重点介绍一下编译时注解。运行时注解运行时注解的定义如下,在声明注解时指定@Retention(RetentionPolicy.RUNTIME)即可,相比编译时注解,性能低,但是灵活性好,实现起来比较简单,写法如下@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)//ja...
2018-02-21 11:55:23
1413
原创 ContentProvider使用
概述今天来看看ContentProvider的使用。public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG = "DatabaseHelper"; //数据库名称 private static final String DATABASE_NAME = "pe...
2018-02-08 18:33:50
401
原创 Activity,Fragment,自定义View状态的保存和恢复
概述今天我们从源码的角度来分析一下Activity,Fragment状态保存和恢复的过程,以及如何在自定义View中保存和恢复状态。通常我们在onSaveInstanceState方法里保存Activity状态。protected void onSaveInstanceState(Bundle outState) { outState.putBundle(W
2018-02-03 21:51:41
1350
原创 Android开发abiFilter
概述Android开发中,如果使用到so库,我们一般会在gradle文件中指定so库支持的架构类型 ndk { abiFilters "armeabi" }然后新建jniLibs目录,建立对应的目录,如下所示这边文章就是来介绍一下abiFilter中相关的一些东西。1.为什么要指定这么多类型 因为不同C
2018-02-01 19:00:43
4872
原创 安卓Support Anotation学习
概述今天来看看Android的support包中为我们提供的一套注解,总共可分为以下几类注解1.Null注解2.资源类型注解3.类型定义注解4.线程注解5.值范围注解6.权限注解7.重写函数注解8.返回值注解9.Keep注解Null注解和资源类型注解public class MainActivity extends AppComp
2018-01-31 19:01:54
333
转载 GPU过渡绘制和GPU呈现模式分析
概述今天学习App的优化,转载几篇别人的文章,方便自己的学习,顺便自己总结一下Android性能优化之GPU过度绘制与图形渲染优化你真的了解过度绘制吗GPU过渡绘制接下来总结一下过度绘制的优化措施1.在Theme中给activity设置背景,这样不算一次绘制,可以减少层级2.减少不必要的背景,可以减少层级,如果一个View和它的Layout有相同的背景,则指定一
2018-01-27 22:14:07
1559
原创 AIDL通信过程中设置死亡代理
概述在进行进程间通信的过程中,如何服务端进程由于某种原因异常终止,我们的远程调用就会失败,影响我们的功能,那么怎么样能够知道服务端进程是否终止了呢,那就是给Binder设置死亡代理,下面看看如何设置。 @Override public void onServiceConnected(ComponentName name, IBinder service) {
2018-01-27 17:56:48
3535
原创 关于Android的Lint检查的一些结果分析
前言在安卓开发中,Lint可以用来帮助我们检查代码中存在的一些问题,使用方法也很简单,Analyze---Inspect CodeLint检查完成后,可以在Inspection Results中看到检查结果下面总结一些常见的lint问题 1.Image without contentDescription,没有给ImageView指定
2018-01-25 10:29:22
2064
原创 关于屏蔽Android返回键的一些思考
前言在Android开发中,有时候我们需要屏蔽掉系统的返回键,比如在闪屏页面或者进行某些特定的操作时,通常的实现要如下两种方式。1.重写Activity的onBackPressed方法,当系统检测到你按下了返回键的时候会触发这个方法,通常是我们手机的back键@Override public void onBackPressed() {// su
2018-01-13 16:32:55
5220
原创 Android修改圆形进度条ProgressBar的默认颜色
前言有时候系统默认的圆形进度条不能满足我们的需求,那么下面我们来对默认的颜色和样式进行一个修改。效果图实现代码因为是圆形进度条,我们需要设置下面这个属性android:indeterminateDrawable <ProgressBar android:layout_width="40dp" a
2018-01-11 14:26:05
4310
2
原创 从零开始搭建MVC项目
前言这篇文章主要记录如何搭建一个MVP架构,同时结合Retrofit,RxJava,Okhttp等主流框架实现网络请求,方便后面的复习以及快速开发。项目分包base:放一些基类,Activity,Adapter,Present等common:存放常量,Applicationmodel:模型层,存放实体类以及网络请求相关presenter:P层,接收View层的命令,调用M层获取数据,通知Vie
2018-01-04 11:25:58
512
原创 Android开发艺术探索读书笔记(第1章 Activity的生命周期和启动模式)
1.onStart和onResume,onPause和onStop从描述上来说差不多,对我们来说有什么实质性的不同? onStart和onStop是从Activity是否可见这个角度来区别的,onResume和onStop是从Activity是否位于前台来区分的。在实际使用中没有明显区别。2.从A Activity启动B Activity,生命周期如下 A onPause->B onCr
2017-12-27 13:14:30
333
原创 Jsp中的静态引入和动态引入
前言在jsp中,要引入一个外部文件可以通过两种方式:I.通过jsp指令<%@include file="" %>引入 II.通过jsp动作标签<jsp:inclue page="">引入其中第一种方式称为静态引入,第二种方式称为动态引入静态引入静态引入是指在把两个页面翻译成Servlet的过程中进行合并 下面是静态引入合并后的Servlet的代码 try { response.set
2017-12-22 14:40:11
1023
原创 Jsp内置对象page和pageContext的区别
在jsp中有9大内置对象,其中page和pageContext有什么区别,今天讲一下。区别page代表this,也就是jsp翻译成的Servlet对象,类型是java.lang.Object,一般很少使用这个对象。pageContext代表当前页面的上下文对象,可以获得其他的内置对象,是,代表javax.servlet.jsp.PageContext,下面我们从jsp转化后的Servlet中去看看。
2017-12-22 11:13:47
2212
原创 谈谈表单在提交到Servlet时action中的路径问题
前言表单提交到Servlet,是一个很简单的功能,可是其中涉及到的一些细节你注意到了吗?今天就大家可能出现问题的一个地方进行一个说明。实现首先我们需要一个Servletpublic class HelloServlet implements Servlet {很简单,多余的代码我就不给出了,因为我们今天讨论的重点是路径问题,然后我们需要在web.xml中注册和映射这个Servlet<!--注册
2017-12-21 17:24:29
2401
原创 设置Eclipse编译后class文件的路径
前言在JavaWeb项目中,class文件一般存放在WEB-INF/classes目录中,而eclipse默认生成的class文件不在这个目录中,这个时候就需要我们手动进行设置了,具体步骤如下项目名称右键–>Build Path–>Config Build Path,进入到下面的页面点击右边的Browse,就可以选择WEB-INF下的classes目录了,设置完了以后,有些人会发现WEB-INF目录
2017-12-21 14:44:50
10640
原创 Tomcat配置任意目录下的web应用
前言今天来学习一下如何使用Tomcat配置任意目录下的web应用。首先,我们需要手动创建一个web应用,放在任意目录下,这里我放在C盘,起名为firstWebApp,目录结构如下所示firstWebApp ---WEB-INF ---web.xml ---index.jsp这就是一个最简单的web应用了 配置方式有两种 I. 直接把这个web应用放到Tomcat的
2017-12-21 11:53:16
2329
原创 浏览器中管理TomcatApp出现401Unauthorized
前言当我们需要在网页中管理Tomcat中的web项目时,首先在浏览器输入localhost:8080,会出现下面的页面,说明我们的Tomcat服务器启动正常,然后点击右边的Manager App,此时会弹出一个输入用户名和密码的对话框如果用户名和密码不正确,是不能进入到App的管理页面的,会出现没有权限的错误提示页面 这是因为我们没有配置相应的权限,步骤如下进入到Tomcat目录下conf/tom
2017-12-21 11:14:14
2956
HexEditor.dll
2020-06-12
Android热修复实现
2018-06-22
极光推送Demo
2016-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人