摘要:前言 otto 是 Square公司发布的一个发布-订阅模式框架,它基于Google Guava 项目中的event bus模块开发,针对Android平台做了优化和加强。虽然Square已经停止了对otto的更新并推荐使用RxJava和RxAndroid来替代它,但是otto的设计理念和源码仍旧值
阅读全文
摘要:1.三级缓存设计步骤: * 从内存中取图片 * 从本地文件中取图片 向内存中保持一份 * 请求网络图片,获取图片,显示到控件上 向内存存一份 向本地文件中存一份 1 package com.atguigu.beijingnews.utils; 2 3 import android.graphics.
阅读全文
摘要:每一次网络请求都是一个Request,Request是对url,method,header,body的封装,也是对Http协议中请求行,请求头,实体内容的封装 1.HttpUrl HttpUrl主要用来规范普通的url连接,并且解析url的组成部分 现通过下面的例子来示例httpUrl的使用http
阅读全文
摘要:OSI分为物理层、数据链路层、网络层、传输层、会话层、表现层、应用层共七层。 1.物理层:通过媒介传输比特,确定机械和电气规范。(比特bit) 2.数据链路层:将比特组装成帧和点对点的传递。(帧frame) 3.网络层:负责数据包从源到宿的传递和网际互联。(包packet) 4.传输层:提供端对端的
阅读全文
摘要:1.构造函数 当我们要调用EventBus的功能时,比如注册或者发送事件,总会调用EventBus.getDefault()来获取EventBus实例: public static EventBus getDefault() { if (defaultInstance == null) { sync
阅读全文
摘要:前言 EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用广
阅读全文
摘要:有一种方法可以阻止父层的View截获touch事件,就是调用 getParent().requestDisallowInterceptTouchEvent(true);方法。一旦底层View收到touch的 action后调用这个方法那么父层View就不会再调用onInterceptTouchEve
阅读全文
摘要:存在的问题 1. 默认情况下,ViewPager会根据setOffscreenPageLimit()方法设置的大小,自动预加载2. 还是根据setOffscreenPageLimit()方法设置的大小,会去销毁fragment视图 下面的图说明情况 滑动fragment1,此时会预加载fragmen
阅读全文
摘要:一、开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logcat ADB 复制代码 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK E
阅读全文
摘要:多个线程共享同一份内存,就是说,一个变量可以同时被多个线程所访问。这里要特别注意同步和原子操作的问题。 Java中最基本的同步例子。 如果觉得使用wait/notify比较麻烦,可以使用Java提供的BlockingQueue,从名字就可以看出它是一个阻塞队列。看下面的例子。
阅读全文
摘要:1.AndroidAndJSInterface.java 2.deml.html
阅读全文
摘要:webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); js调用的Java文件中写 点击视频可以选择任意播放器
阅读全文
摘要:1.映射Java对象到JavaScript对象上 MainActivity.java 注意:解决该WebView.addJavascriptInterface接口不起作用的两种办法 ①针对版本改成16 ②在JavaScript接口类的方法加上@JavascriptInterface注解 2.Java
阅读全文
摘要:1.main.xml 2.demo.html 3.WebViewDemo.java 首界面 点击按钮时,html内容改变
阅读全文
摘要:1.使用StateListDrawable替换selector 默认不好使需要在使用的对象设置为可点击的;有两种方法: 方法1 方法2: 2.使用GradientDrawable替换shape
阅读全文
摘要:一、代理概念 代理的两种模式静态代理和动态代理,这个是怎么区别的我们谈一下,Java中都是通过编译器生成.class文件,在通过JVM读取,然后加载到内存中,生成对应的需要对象,根据代理类创建的时间分成静态和动态代理,静态的代理就是在程序运行前.class文件就存在,我们经常使用的代理模式就是静态代
阅读全文
摘要:1.本地新建文件夹GIT,Git Bash打开命令窗口, ①git config --global user.name "名字" eg: git config --global user.name "ganchuanpu" git config --global user.email "邮箱地址"
阅读全文
摘要:1.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。 应用框架层(Java Framework) 应用框架层为开发人员提供了可以开发应用程序所需要的API,我们平常开发应用程序都是调用的这一层所提供的API,当然也
阅读全文
摘要:前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。 1.View简介 View是Android所有控件的基类,同时ViewGroup也是继
阅读全文
摘要:1.观察者模式模式简介 定义: 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 观察者模式结构图: Sub
阅读全文
摘要:前些天做项目时,程序出现意外的问题,经后来分析是使用ArrayList这个线程不安全的方法导致 解决这个问题通常有两种方法(个人认为) 一:使用synchronized关键字,这个大家应该都很熟悉了,不解释了; 二:使用Collections.synchronizedList();使用方法如下: 假
阅读全文
摘要:一、TraceView工具如何使用 TraceView有4种启动/关闭分析方式: (1) 第一种使用方法演示 1、 选择跟踪范围 在想要根据的代码片段之间使用以下两句代码 例如,onCreate与onStart方法之间方法跟踪 2、添加SD卡访问权限 如果不添加,执行项目会出现以下异常 如果手机没有
阅读全文
摘要:1.Service 前台服务与Notification 我们在用很多应用的时候,发现他们启动的时候,会在通知栏生成一个和该App的通知,来继续执行Service,比如墨迹天气,很多音乐App.这种叫前台服务,其实这种Service有一个很好的一点,就是不会因为Service自身的优先级低,而被系统K
阅读全文
摘要:阿里云推出了移动热修复服务,听说这个服务傻瓜式接入,性能相对较好,对新技术比较好奇的我决定尝试一下。 1.首先,需要开通这个服务,创建应用 2.然后,在项目中接入服务。按照文档所述 第一步:gradle远程仓库依赖, 打开项目找到app的build.gradle文件,添加如下配置:添加maven仓库
阅读全文
摘要:1.共享变量(内存) 2.管道 3.handle机制 runOnUiThread(Runnable) view.post(Runnable) android 进程内的消息驱动机制 Handler,MessageQueue,Runnable,Looper Looper和Message的处理机制:首先在
阅读全文
摘要:1.算法的效率 虽然计算机能快速的完成运算处理,但实际上,它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源。要想编写出能高效运行的程序,我们就需要考虑到算法的效率。算法的效率主要由以下两个复杂度来评估:时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。空间复杂度:评估执
阅读全文
摘要:前言 Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它。 1.Context概述 Context意为上下文或者场景,是一个应用程序环境信息的接口。在开发中我们经常会使用
阅读全文
摘要:在ActivityA中,startActivityForResult到ActivityB,其中ActivityB设置为SingleTask。 那么在实际出现的现象为: ActivityA的onActivityResult将会首先被回调,然后再执行ActivityB的onCreate函数,也就说无论A
阅读全文
摘要:大家先看看目录结构 先看V层 View里面我写了一个接口LoginView 然后,在登录这个Activity 去实现这个接口,并实现其抽象方法。即看LoginActivity onCreate中引用了P view层点击事件条用了P层 我们再看P层。 最后M层 model里面我写了一个接口LoginM
阅读全文
摘要:1.JVM内存模型 2.引用技术法和可达性分析法 3.对象的强、软、弱和虚引用区别与作用 4.jvm垃圾回收机制,以及回收算法 5.常见的OOM和SOF的原因和解决方案,以及通过什么工具进行分析。 6.常见的JVM输入参数熟悉 7.了解GC停顿,逃逸分析,TLAB区,堆外内存等 8.常用垃圾收集器:
阅读全文
摘要:一、Lambda表达式 1.语法格式 Lambda是匿名函数,可以传递代码。使用“->”操作符,改操作符将lambda分成两部分: 左侧:指定了 Lambda 表达式需要的所有参数 右侧:指定了 Lambda 体,即 Lambda 表达式要执行的功能,也就是实现接口方法的代码 注:lambd可以省略
阅读全文
摘要:基础算法主要学习: 1.理解大O等记号 2.动态规划如:几类背包问题最好有现成的代码用于笔试。最长公共子序列 3.贪心算法:理解哈夫曼编码(笔试常考概念)哈夫曼树是一颗完全二叉树,不包含度数为1的节点。 4.B树B+树用于理解数据库索引 5.常用的图算法:广度优先借助队列,深度优先借助栈,最短路径算
阅读全文
摘要:自定义下拉刷新控件 - RefreshableView(支持所有控件的下拉刷新)https://blog.csdn.net/cjh_android/article/details/52462367 亲测:有bug 仿照新浪微博 Android 客户端个人中心的 ScrollView,下拉背景伸缩回弹
阅读全文
摘要:1.图片错位原理: 如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,就不会产生图片错位;重用convertview但没用异步,也不会有错位现象。但我们的项目中list一般都会用,不然会很卡。 在上图中,我们能看到listview中整屏刚好显示7个item,当向下
阅读全文