Simon_Crystin的博客

私信 关注
Simon_Crystin
码龄5年
  • 253,751
    被访问量
  • 69
    原创文章
  • 32,372
    作者排名
  • 112
    粉丝数量
  • 于 2015-12-10 加入CSDN
获得成就
  • 获得115次点赞
  • 内容获得140次评论
  • 获得152次收藏
荣誉勋章
兴趣领域
  • #Android
    #Android Studio#gradle#数据结构#性能优化#Kotlin#Java#Flutter#面试#Android Jetpack
TA的专栏
  • Android应用层
    55篇
  • Java
    15篇
  • 开发工具
    1篇
  • Android 组件
    4篇
  • 脚本
    1篇
  • Linux
    2篇
  • C ++
  • Android源码
    3篇
  • 设计模式
    2篇
  • Android开源框架
    1篇
  • Android系统框架
    1篇
  • WebView
    4篇
  • I/O相关
    2篇
  • Android性能优化
    4篇
  • 计算机基础
    1篇
  • Kotlin
    3篇
  • 错误笔记
  • Android动态加载
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Android 小米深色模式对View进行适配

问题概述:问题来源于测试提了一个bug,在小米手机上图片直接消失了。原因:造成这个问题的原因在于,小米手机深色模式下会为所有的应用默认开启深色模式,可在设置中主动关闭。哪怕应用没有主动适配,小米也会为应用开启深色模式。其他厂商暂未发现此问题。问题再探究竟:小米手机为开启深色模式的应用开启颜色反转,黑色变成白色,白色变成黑色。正常情况下,应用是可以正常反转使用的。但是如果应用如果使用了shape下的solid属性。就会造成solid反转失效。这也是造成我们应用图片不显示的根本原因。由于solid反转
原创
444阅读
0评论
1点赞
发布博客于 4 月前

数组与容器对比

容器能否完全替代数组?针对数组类型,很多语言都提供了容器类,比如 Java 中的 ArrayList、C++ STL 中的 vector。在项目开发中,什么时候适合用数组,什么时候适合用容器呢?这里我拿 Java 语言来举例。如果你是 Java 工程师,几乎天天都在用 ArrayList,对它应该非常熟悉。那它与数组相比,到底有哪些优势呢?我个人觉得,ArrayList 最大的优势就是可以将...
原创
326阅读
0评论
0点赞
发布博客于 2 年前

Linux环境变量总结

Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量。Linux环境变量分类一、按照生命周期来分,Linux环境变量可以分为两类:1、永久的:需要用户修改相关的配置文件,变量永久生效。2、临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。二、按照作用域来分,Linux环境变量可以分为:...
原创
200阅读
0评论
1点赞
发布博客于 2 年前

9102年了,还不知道Android为什么卡?

导读最近华为方舟编译器要开源了,笔者去看了下发布会PPT,发现作为一名Android开发者,PPT中所介绍的知识点我居然不能完全看懂???于是乎恶补了下PPT中的内容,整理成本文。本文将用通俗的语言从底层介绍Android卡顿的历史原因和谷歌与之斗争的过程阅读完这篇文章后你将理解计算机是如何解读我们所写的程序并执行相应功能的了解Android虚拟机的进化史从底层了解造成Android...
转载
509阅读
0评论
0点赞
发布博客于 2 年前

Android动态加载技术 简单易懂的介绍方式

我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装APK就能升级应用的功能(特别是 SDK项目),这样一来不但可以大大提高应用新版本的覆盖率,也减少了服务器对旧版本接口兼容的压力,同时如果也可以快速修复一些线上的BUG。这种技术并不是常规的Android开发方式,早期并没有完善的解决方案。从“不明觉厉”到稳定投入生产,一直以来我总想对此编写一些文档,这也...
转载
768阅读
0评论
0点赞
发布博客于 2 年前

使用Android sdk/build-tools/dx工具转jar为dex时出现:-Djava.ext.dirs is not supported

使用dx.bat工具出现以下错误:-Djava.ext.dirs=C:\Users\EDZ\AppData\Local\Android\Sdk\build-tools\27.0.3\lib is not supported. Use -classpath instead.Error: Could not create the Java Virtual Machine.Error: A fa...
原创
1172阅读
4评论
0点赞
发布博客于 2 年前

Kotlin实战--给别人的类添加方法:扩展函数和属性

1.概述扩展函数能够让我们与项目无缝接入,我们能够在无侵入的情况下为类添加更多的行为和属性,Kotlin库中很多地方就用到了扩展函数,如Anko库里面的布局系统,集合的使用等。正是由于扩展函数的使用,才可以让我们与JAVA无缝衔接。并且扩展函数的使用非常的简单,下面我将从下面几个方面介绍扩展函数。为什么要使用Kotlin中的扩展函数?如何使用扩展函数和扩展属性?扩展函数和属性原理扩展函...
原创
1140阅读
0评论
3点赞
发布博客于 2 年前

Kotlin实战--消除静态工具类:顶层函数和属性

1.引入我们都知道, Java 作为 门面向对象的语言,需要所有的代码都写作类的函数大多数情况下,这种方式还能行得通。但事实上,几乎所有的大型项目,最终都有很多的代码并不能归属到任何 个类中。有时 个操作对应两个不同的类的对象,而且重要性相差无几。有时存在 个基本的对象,但你不想通过实例函数来添加操作,让它的 API 继续膨胀。结果就是,最终这些类将不包含任何的状态或者实例函数,而是仅仅作为一堆...
原创
326阅读
0评论
1点赞
发布博客于 2 年前

用Kotlin的Anko库优雅开发Android应用--Anko库详细教程

前言最近Kotlin的呼声又是日益高涨,前几天9012年Google IO正式将Kotlin从first _class提升为kotlin_first。我也是接触了一段时间的Kotlin,给我的感觉就是简约,快速。无需繁琐的findId,高阶函数的应用,再加上Kotlin的null 安全,更是将代码的崩溃率降到更低。今天我们就来介绍一下今天的主角—Anko1.AnkoAnko是JetBrai...
原创
1972阅读
0评论
2点赞
发布博客于 2 年前

CPU核心数目 与 多线程

一直以来有这样的疑惑,在现如今多核多线程的电脑处理器之下,一个进程中的几个线程是 怎么运行的呢?(是经系统和JVM分配少量的资源 最后轮流切换 时间调度?还是这几个线程分配到不同的核上同时运行?)今天就这一问题查了一些资料,现整理如下:单个CPU一个时刻只能运行一个线程?单核CPU电脑同一时间内只能执行一个线程,首先了解一下,CPU执行的过程 ,它是把时间分成若干个小时间段,这些时间段很小的...
转载
1683阅读
0评论
2点赞
发布博客于 2 年前

Android 性能优化--内存优化之Bitmap优化

Android开发中,Bitmap是经常会遇到的对象,特别是在列表图片展示、大图显示等界面。而Bitmap实实在在是内存使用的“大客户”。如何更好的使用Bitmap,减少其对App内存的使用,是Android优化方面不可回避的问题。因此,本文从常规的Bitmap使用,到Bitmap内存计算进行了介绍,最后分析了Bitmap的源码和其内存模型在不同版本上的变化。Bitmap的使用一般来说,一个对...
转载
428阅读
0评论
2点赞
发布博客于 2 年前

Android性能优化 View--布局优化

目录1.影响的性能布局性能的好坏 主要影响 :Android应用中的页面显示速度2.如何影响性能布局影响Android性能的实质:页面的测量 & 绘制时间1个页面通过递归 完成测量 & 绘制过程 = measure、layout 过程3.优化思路优化方向:布局性能、布局层级、布局复用性 和 测量 & 绘制时间具体如下针对 页面布局的性能、层级、...
转载
113阅读
0评论
0点赞
发布博客于 2 年前

Android性能优化 View--绘制优化

目录1.影响的性能绘制性能的好坏 主要影响 :Android应用中的页面显示速度2.如何影响性能绘制影响Android性能的实质:页面的绘制时间1个页面通过递归 完成测量 & 绘制过程3.优化思路主要优化方向是:降低View.onDraw()的复杂度避免过度绘制(Overdraw)3.具体优化方案下面,我将详细分析每种优化方案4.1. 降低View.on...
转载
790阅读
0评论
0点赞
发布博客于 2 年前

磁盘I/O的三种方式对比:标准I/O、直接 I/O、mmap

文章目录@[TOC]1.引入1.1 标准I/O1.2直接I/O1.3 mmap1.引入让我们先看一下Linux系统下IO结构模型从图中可以看到标准 I/O、mmap、直接 I/O 这三种 I/O 方式在流程上的差异1.1 标准I/O大多数文件系统的默认I/O操作都是标准I/O。在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地...
原创
1230阅读
0评论
1点赞
发布博客于 2 年前

深入分析 Java I/O 的工作机制

Java 的 I/O 类库的基本架构I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I/O 上也一直在做持续的优化,如从 1.4 开始引入了 NIO,提升了 I/O 的性能。关于 NIO 我们将在后面详细介绍...
原创
94阅读
0评论
0点赞
发布博客于 2 年前

磁盘I/O那些事

概述计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计...
转载
290阅读
0评论
0点赞
发布博客于 2 年前

Android Retrofit统一处理 token失效跳转到登录页面

文章目录1.问题引入2.解决方案1.问题引入在客户端开发中,我们可能会遇到token失效问题,这个时候我们可以刷新token或者跳转到登录页面,这里我们就给出如何统一处理token失效问题,基于Retrofit。2.解决方案在BaseFilterObserver(implements Observer)中重写onNext方法 public void onNext(@NonNull Res...
原创
4736阅读
1评论
3点赞
发布博客于 2 年前

Android P(9.0) http网络请求的问题(Cleartext HTTP traffic to **** not permitted)

1.前言Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P)的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport LayerSecurity)传输层安全协议,而 Andr...
原创
1164阅读
0评论
0点赞
发布博客于 2 年前

Cookie、Session、Token那点事儿

1.什么是Cookie?2.Session :3.Token :4.Cookie和Session的区别:6.Token 和 Session 的区别:1.什么是Cookie?Cookie 技术产生源于 HTTP 协议在互联网上的急速发展。随着互联网时代的策马奔腾,带宽等限制不存在了,人们需要更复杂的互联网交互活动,就必须同服务器保持活动状态(简称:保活)。于是,在浏览...
转载
227阅读
0评论
1点赞
发布博客于 3 年前

Android WebView开发(三)--WebViewClient 与WebChromeClient的使用

1.前言2.WebViewClient类2.1 WebViewClient作用:2.2 WebViewClient 常用方法 :2.2.1 shouldOverrideUrlLoading()方法3.WebChromeClient类3.1 WebChromeClient 作用:3.2 WebChromeClient 常用方法:1.前言前两篇我们讲解了 And...
原创
2229阅读
0评论
0点赞
发布博客于 3 年前

Android WebView开发(二)--WebSettings使用详解

1.前言2.WebSettings 介绍3.WebSettings方法介绍1.前言在上一篇文章我们介绍WebView的使用介绍,主要是讲解了WebView的使用基础。这一篇就是介绍WebSettings的使用详解了。 WebSettings 就是一个管理WebView 状态的类。2.WebSettings 介绍 Manages settings sta...
原创
3143阅读
0评论
0点赞
发布博客于 3 年前

Android WebView开发(一)--WebView的使用介绍

1.前言2. Android WebView 简介3. 简单使用3.1、添加网络权限4.WebView的状态5. 关于前进 / 后退网页6. 清除缓存数据1.前言目前很多公司的 App 就只使用一个 WebView 作为整体框架, App 中的所有内容全部使用 HTML5 进行展示,这样只需要写一次 HTML5 代码,就可以在 Android 和 iOS 平...
原创
878阅读
0评论
2点赞
发布博客于 3 年前

Android PtrFrameLayout 与RecyclerView滑动冲突解决方法

1.背景2.主要代码逻辑2.1 父View代码(PtrFrameLayout)2.2 子View关键代码(RecyclerView)3.完整代码3.1 父View完整代码1.背景如果你也是用的PtrFrameLayout 下拉刷新框架和RecyclerView 出现了冲突,可以参考一下。在开发中,一个水平布局的RecyclerView出现了与PtrFr...
原创
1603阅读
3评论
1点赞
发布博客于 3 年前

Android 点击WebView图片预览图片

1. 概述2.流程分析3.代码实现3.1 添加权限:3.2 添加依赖:3.3 代码实现:1. 概述在实际开发中,我们可能会遇到用webview去展示一篇文章或者其他内容,然后我们需要点击里面的图片能够展示出来,这就是我们今天的重点–点击webview的图片进行展示。先看一个效果图。 2.流程分析1.用webview加载文章; 2.点击图片某个...
原创
2160阅读
1评论
0点赞
发布博客于 3 年前

Java在任意位置拼接字符串

[TOC] 在日常开发中我们经常会碰到对字符串的操作,今天就来总结下Java中对字符串的拼接。 拼接字符串可分为两种: 1.在字符串末尾添加字符串; 2.在字符串任意位置添加字符串; 下面我们分别来看看怎么拼接。1.在字符串末尾添加字符串我们可以用StringBuilder(效率高,线程不安全)和StringBuffer(效率低,线程安全)的append()方法。 举个例子...
原创
1961阅读
0评论
0点赞
发布博客于 3 年前

Android中使用Handler造成内存泄露的分析和解决

Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可到达,同样会被GC回收。...
转载
310阅读
0评论
0点赞
发布博客于 3 年前

Android 服务之IntentService 详解

1. IntentService 概述2.IntentService如何使用3. IntentService源码解析1. IntentService 概述IntentService继承自Service,所以,我们可以用来执行后台耗时任务。那为什么又要封装一个这样的IntentService呢?下面我们来看看IntentService有什么特点。它本质是一种特殊的S...
原创
748阅读
0评论
0点赞
发布博客于 3 年前

Java设计模式——观察者模式

1.观察者模式概述1.1观察者模式定义1.2 观察者模式UML 类图1.3 观察者的优缺点对比1.4 观察者模式适应场景2.观察者模式实例3.Java内置观察者模式1.观察者模式概述1.1观察者模式定义观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观...
原创
405阅读
0评论
0点赞
发布博客于 3 年前

Android窗口管理框架——View的绘制流程和工作原理

1.概述源码分析基于Android O 。如上图,Activity由window组成,Activity内部有个Window成员,它的实例为PhoneWindow,PhoneWindow有个DecorView(这个也是最顶层的View),这个DecorView就是存放布局文件的,里面有TitleActionBar和ContentView(这个就是我们我们setContentView的布局...
原创
514阅读
0评论
0点赞
发布博客于 3 年前

Android系统窗口管理框架——View的生命周期

1.View的概述 This class represents the basic building block for user interface components. A View occupies a rectangular area on the screen and is responsible for drawing and event handling...
原创
880阅读
0评论
0点赞
发布博客于 3 年前

带Androidlogger插件的notepad++

带Androidlogger插件的notepad++,直接下载解压,可用直接使用
zip
发布资源于 3 年前

Java 线程池详解

什么是线程池 为什么要使用线程池 线程池的处理逻辑 如何使用线程池 如何合理配置线程池的大小 1.什么是线程池 线程池,顾名思义就是装线程的池子。其用途是为了帮我们重复管理线程,避免创建大量的线程增加开销,提高响应速度。2.为什么要用线程池作为一个严谨的攻城狮,不会希望别人看到我们的代码就开始吐槽,new Thread().start()会让代码看起来...
转载
185阅读
0评论
0点赞
发布博客于 3 年前

Linux系统编程——I/O多路复用select、poll、epoll的区别

1.概述I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作。但select(),po
转载
159阅读
0评论
0点赞
发布博客于 3 年前

Android 读取文件的正确打开方式

1.Java 读取操作基本知识 图片来自: 2017java文件操作(读写操作)从上图可以开出,java的读写操作(输入输出)可以用“流”这个概念来表示,总体而言,java的读写操作又分为两种:字符流和字节流。1.1 流相关知识流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也
原创
2732阅读
0评论
0点赞
发布博客于 3 年前

记一次从上层到HAL层的历程

仅限个人查看CTRL+SHIFT+H通过服务接口.Stub查找 通过 _服务类.cpp类全局查找 CTRL+SHIFT+F 硬件人员维护这个值!
原创
420阅读
0评论
0点赞
发布博客于 3 年前

Android消息机制--Handler 深入解析(JAVA层)

1. Android 消息机制概述阅读本文之前,你需要知道以下几点:1.Handler的使用必须依赖于一个Looper对象2.线程是默认没有Looper的,但是UI线程有一个Looper对象;3.在启动APP的时候,UI线程Looper会初始化完毕,所以可以得出,UI线程可以直接使用Handler。1.1Android消息机制是什么? Android消息机制 主要指
原创
542阅读
0评论
0点赞
发布博客于 3 年前

Android 进阶(三)--Android事件分发机制

1.前言Android事件分发机制在Android开发者必须要了解的知识,并且是解决View的滑动冲突的基础。2.事件分发的基础要想了解事件分发的机制,我们必须要知道事件分发的基础,即,事件分发的对象和流程。2.1 事件分发的定义将点击事件(MotionEvent)向某个View进行传递并最终得到处理。2.2 事件分发的对象当用户触摸屏幕时(View或Vie...
原创
579阅读
0评论
1点赞
发布博客于 4 年前

Android进阶(二)--序列化Serializable和Parcelabel使用与区别

1.序列化1.1 序列化的定义 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。简单地说,“序列化”就是将运行时的对象状态转换成二进制,然后保存到流、内存或者通过网络传输给其他端。1.2 序列化的使用场景我们...
原创
1007阅读
2评论
2点赞
发布博客于 4 年前

Android开发进阶(一) Intent与IntentFilter

1.前言在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度。Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的结构更值得我们去研究。读完本篇你将会了解:1.Intent的显示调用与隐式调用 2.隐式调用的匹配规则(重点) 3.隐式调用的使用场景 4.隐式调用的...
原创
1735阅读
2评论
1点赞
发布博客于 4 年前

简单封装弧形广告轮播图(ViewPager+贝塞尔曲线)

前言通过ViewPager和贝塞尔曲线实现了一个弧形广告轮播图。效果图实现方法想要实现这个效果,现在几行代码就可以了:Step 1. Add it in your root build.gradle at the end of repositories:allprojects { repositories { ... maven { u
原创
3477阅读
0评论
3点赞
发布博客于 4 年前

自定义控件 | 仿《最美有物》点赞效果

前言最近在跟着Hencode学习自定义控件,一直想着自己能够照着别人写的demo写一个好看的View,就科学上网看看了别人的一些demo,看到了一位大神写的模仿《最美有物》的点赞效果,觉得胜似喜欢,于是也跟着写了一个demo。主要是看着流程分析自己撸出来的,之前用了自己的写法,然后看到了大神demo有更好的解决方案,后面也改过来了,所以在代码实现方式都差不多。效果图动画分析1.向上拉伸是一个属性动画
原创
1110阅读
1评论
0点赞
发布博客于 4 年前

Android自定义数字键盘(支持随机数字)

前言也是最近想写个demo玩玩,不知道写哪个方面的好,就随便写了一个自定义的键盘,比较简单,但是做了封装,支持jitpack库依赖(这也是我一次开源自己的库,比较水的一个开源项目,仅供学习使用)。概述主要完成了以下功能: 1.自定义数字键盘 2.切换到随机数字键盘 3.自定义确定和删除等键(向外抛出接口,感觉设计的挺好)下面先看下运行效果吧使用方法1.在项目build.gradle文件中添加j
原创
4187阅读
7评论
2点赞
发布博客于 4 年前

How to become a better Android developer: 30+ bite-sized pro tips

转自:https://techbeacon.com/how-become-better-android-developer-30-bite-sized-pro-tipsBecoming an Android developer is easy, but becoming a successful Android developer and standing out from the rest is
转载
1201阅读
0评论
0点赞
发布博客于 4 年前

Java反射机制详解

前言Java反射机制很早的时候就有耳闻,期间也会去看看相关资料,但是又很快会忘记,所以,写一篇Blog来加深记忆与理解!!Java反射的定义Java反射机制是指在运行状态(非编译)中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 用一句话总结就是反射可以实现在运行时可以
原创
593阅读
3评论
1点赞
发布博客于 4 年前

RecycleView实现MVP框架下的双列表联动与悬停

前言最近看了别人的一篇blog,也是实现recycleview的双列表联动,同时应用了MVP框架。于是就模仿写了一个类似的双列表联动与悬停。在MVP方面,我仿照的是官方的todo-mvp,感觉写得有点不伦不类了,这里就不详述,另外在实现需求方面,和那个大神相比,也做了许多改变,当然有些具体的难点我没想到,参照了他的思路,然后实现出来了。在开发中,也尝试了其他的方法: 1.在点击左边省份时,若右边的
原创
2999阅读
1评论
5点赞
发布博客于 4 年前

Android:dagger2让你爱不释手-重点概念讲解、融合篇

前言看这篇博文请先移步基础篇: Android:dagger2让你爱不释手-依赖注入框架基础篇,这篇讲解了Inject,Component,Module,Provides是如何构成dagger2整个依赖注入框架的因为dagger2的整个依赖注入框架已经构建完成,所以dagger2中剩下的Qualifier(限定符)、Singleton(单例)、Scope(作用域),SubComponent概念基本都
转载
492阅读
0评论
0点赞
发布博客于 4 年前

Android:dagger2让你爱不释手-依赖注入框架基础篇

前言dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库)。当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探它的究竟,到底能给我带来怎样的好处。在学习使用dagger2的过程中,我遇到了以下的一些困惑:1.dagger2中的Inject,Component,Module,Provides等等都是什么东东,有什么
转载
548阅读
0评论
0点赞
发布博客于 4 年前

带你轻松了解Android 设计模式——Builder模式

引入在Android开发中,我们一定运用到Android的Dialog,如下:AlertDialog.Builder builder=new AlertDialog.Builder(this);AlertDialog dialog=builder.setTitle("Simon") .setIcon(android.R.drawable.dialog_alert)
原创
3688阅读
0评论
1点赞
发布博客于 4 年前

Android常用工具类

Android常用工具类,助你开发更简单。
zip
发布资源于 4 年前

OKhttp+Gson实现从网络上获取最新新闻

直接上效果图,画面太美,请保护好自己的小心脏。能画出这么漂亮的UI我都佩服我寄几。新闻列表:新闻详情: 是的 都是最新的新闻。、实现下面我们就来看看具体怎么实现的: 我一直觉得思路是非常重要的所以我先讲思路,有了思路,做起来就非常迅速了 先讲思路: 1.最新的新闻都是由聚合数据提供的(json数据),我们去申请下就好了;(当然你们也可以用我的URL,讲道理,是没有问题的) 2.通过OKht
原创
3001阅读
9评论
1点赞
发布博客于 4 年前

Android异步更新UI教程总结与demo

概述我们在Android开发中可能会遇到下面错误:Only the original thread that created a view hierarchy can touch its views意思是我们只能在主线程更新UI,我们知道UI线程(主线程)如果被阻塞5秒,就会ANR,所以我们耗时的操作都会新开启线程,这就必然涉及到后续的UI的更新,今天我们就来讨论下异步更新UI的使用方法总结。主要讲
原创
1317阅读
0评论
4点赞
发布博客于 4 年前

ScienceNews

通过okhttp+Gson获取网络上的最新新闻
zip
发布资源于 4 年前

这可能是最全的Android:Process (进程)讲解了

官方是这样描述的:Tools for managing OS processes.管理操作系统进程的工具类。下面就来详细介绍下关于Process的点滴:概述默认情况下,同一应用的所有组件均在相同的进程中运行,且大多数应用都不会改变这一点。 但是,如果您发现需要控制某个组件所属的进程,则可在清单文件中执行此操作。各类组件元素的清单文件条目activity、service、receiver 和 prov
原创
35845阅读
4评论
10点赞
发布博客于 4 年前

Android中的强弱引用计数(强弱指针)

强指针与弱指针在Android的源代码中,经常会看到形如:sp、wp这样的类型定义,这其实是Android中的智能指针。智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。程序员往往需要花费很大精力进行精心设计,以避免这些
转载
1692阅读
1评论
0点赞
发布博客于 4 年前

C ++指针入门详解

今天来安利一波C++指针入门: 将从下面5个部分作介绍:1.概述; 2.何为指针; 3.如何使用; 4.重要概念; 5.一个实例。概述通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。我们都知道:每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。 请看下面的实例,它将输出定义
原创
924阅读
0评论
0点赞
发布博客于 4 年前

Jack-server出错:out of memory error,try increasing heap size

出现这个问题主要是因为虚拟机内存不足;下面给出两个解决方案:1.修改jack编译并行数:SERVER_NB_COMPILE; 在 根目录中的.jack文件中; 默认并行数为4,改为2;SERVER_NB_COMPILE=22.增加内存,然后重启下jack server (推荐)export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+
原创
2459阅读
0评论
0点赞
发布博客于 4 年前

Failed to contact Jack server;No Jack Server running ;Android7.0(N)Jack 不支持多人同时在线编译。

背景很多人在开发中,拉下一套新的代码会出现下列错误:1.Failed to contact Jack server; 2.No Jack Server running;//jack server 被kill这是由于Android7.0 采用Jack编译,不支持多人同时在线编译。出现了端口占用问题。不明白Jack 编译的小伙伴可以看下我的这篇BLOG :http://blog.csdn.net/Si
原创
3611阅读
0评论
1点赞
发布博客于 4 年前

Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。

简介这是一个小应用的详解,这个应用可以添加手机黑名单,拦截手机黑名单的来电。通过这个小demo,我们可以对Android四大组件的应用场景有个具体的了解,可以说是一个不错的练手项目。下面给出下载地址: 1.GitHub下载地址: https://github.com/Simon986793021/SafeCall2.CSDN下载地址:概述下面先来讲下Android四大组件在demo中的应用:Ac
原创
4903阅读
1评论
1点赞
发布博客于 4 年前

android 来电拦截,手机黑名单的实现,涵盖Android四大组件,

涵盖了Android四大组件的来电拦截,手机黑名单,通过一个APP,让你熟练掌握Android四大组件
zip
发布资源于 4 年前

最新手机号码,电话号码匹配Java正则表达式

正则表达式今天给大家带来手机和电话号码的正则表达式,废话少说,直接上代码。手机号码匹配:/** * 验证手机号码 * * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147 * 联通号码段:130、131、132、136、185、186、145
原创
11607阅读
5评论
4点赞
发布博客于 4 年前

记一次问题解决历程——脚本的神奇功能

今天一个测试的同事问我,你对adb熟悉吗?我说简单的会。然后说adb reboot(手机重启指令)知道吧?我说知道的。然后她的问题是:能不能一直让手机执行重启命令:我想了下,用脚本应该是可以的。之前接触过shell脚本,感受到了shell脚本的神奇之处,但是在Dos窗口下,对于bat脚本我是一颗大白菜啊。无奈,去寻找答案呗:思路: 1.首先得有个循环或者判断啥的; 2.得需要有个延时啊,因为开关
原创
751阅读
0评论
2点赞
发布博客于 4 年前

浅析Android四大组件之一:ContentProvider 内容提供者 源码

今天在写代码的时候,发现我们用下面的这行代码就能够调用ContentProvider下面的insert方法,Uri uri=getContentResolver().insert(MyContentProvider.uri,contentValues);非常不理解,于是就去看源代码,也算是大概了解了工作原理。没有追到系统层,只是在应用层,所以只是简单的介绍,想要非常详细的解析,可以建议看下这篇博客,
原创
728阅读
0评论
1点赞
发布博客于 4 年前

Android 四大组件之一 :ContentProvider内容提供者从入门到精通

转自: http://www.jianshu.com/p/f5ec75a9cfea前言ContentProvider虽然与Activity、Service、BroadcastReceiver齐名为Android四大组件。但如果你不是特别开发一款与其他APP有数据交互的应用,它的使用频率远没有另外三者高。进而有些开发者可能在做过几个成熟应用后,对ContentProvider的理解还是不够深入,无法
转载
1374阅读
0评论
3点赞
发布博客于 4 年前

Android 四大组件之一 :BroadCastReceiver 广播接收器详解

转自: http://yangguangfu.iteye.com/blog/1063732 BroadCastReceiver简介BroadCastReceiver源码位于:framework/base/core/java/android.content.BroadcastReceiver.java广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送
转载
3094阅读
0评论
0点赞
发布博客于 4 年前

Android Studio自定义万能注释模板与创建类,方法注释模板

代码的注释是我们平时必须面对的问题,今天我们就来看看如何自定义属于自己的注释模板。提高我们的开发效率。这里,我们讲解两种自定义模板。 1.新建的类自动生成的注释; 2.自定义注释模板。新建类自动生成的注释1.打开相应的设置: File–>Settings–>Editor–>File and code Template。选择Files中的Class在上面添加你想要添加的注释:下面有一些变
原创
21427阅读
2评论
6点赞
发布博客于 4 年前

Android APN 配置

转自:(http://blog.csdn.net/yangwen123/article/details/10526871)如果要支持多个运营商的支持就要在apns-conf.xml中加入。APN概念APN(Access Point Name),即“接入点名称”,用来标识GPRS的业务种类,目前分为两大类:CMWAP(通过GPRS访问WAP业务)、CMNET(除了WAP以外的服务目前都用CMNET,比
转载
3472阅读
0评论
0点赞
发布博客于 4 年前

基于MTK平台的Android预制语音信箱号码

我们可以将预制的语音信箱号码写到xml文件夹中。 一般路径为: vendor\mediatek\frameworks\telephony\etc 下的voicemail-conf.xml。<?xml version='1.0' encoding='utf-8'?> <voicemail> <voicemail numeric="46000" carrier="CMCC" vmnumber="
原创
3441阅读
0评论
0点赞
发布博客于 4 年前

Android最新编译工具Jack和Jill

前几天在编译Android6.0系统的时候,报了一个ERROR: Security problem, see Jack server log的错误,就顺便查了一些资料,简单了解了一下Jack并总结如下: 介绍Jack之前,我们先了解一下在Jack未诞生之前我们使用的Javac和dx工具。 对于Java(非Android)应用,我们只需要Java编译器(javac)。它可以
原创
2873阅读
0评论
3点赞
发布博客于 4 年前

Error:Security problem ,see jack server log解决方法,Linux多人使用一台服务器编译出现端口占用。

好久没有写博客了,最近离开了校园,来到一个新的公司实习,整体感觉还是很好的。前几天用Linux系统编译Android6.0编译的时候,报了一个security problem。 下面贴出报错信息ERROR: Security problem, see Jack server log造成这种错误主要是因为多人使用一台服务器编译的端口占用了。基于此,我们改下端口号就行了。下面给出编译Androi
原创
3265阅读
3评论
0点赞
发布博客于 4 年前

Android APP安装后在桌面上不显示应用图标

前几天在写项目的时候运行的时候突然Android桌面上没有了应用图标,但是应用里面下载的应用有。调试版本和发布正式的版本都没有,之前以为是因为用了不同的keystore发布了两个不同的正式版本造成的问题。后来在看别人的文章才知道是什么问题。 原因就是activity中的intent-filter用了不同的data和action属性。intent-filter必须满足所有的属性才通过这种方式
原创
18789阅读
2评论
5点赞
发布博客于 5 年前

Android 支付宝支付详解与demo

先给出可用demo吧 支付宝可用demo下载地址 前段时间公司项目需要集成支付宝支付,蚂蚁金服的文档和demo可以说是非常清晰的,经过一些时间的摸索,也是把支付宝支付集成到了项目中。不可缺少的是去蚂蚁金服申请产品签约,这些就不多说了,按照文档一步一步来,应该是没有什么问题的。我们会得到下面几个参数 // 商户PID public static final String PARTN
原创
6002阅读
13评论
5点赞
发布博客于 5 年前

支付宝支付demo 官方下载

支付宝支付 ,直接可用
rar
发布资源于 5 年前

Android 微信支付详解与Demo

最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希望对大家有所帮助。 先给一个可用的demo吧(运行前先看txt文件) http://download.csdn.net/detail/simon_crystin/9699743;1.去微信开放平台申
原创
18720阅读
74评论
18点赞
发布博客于 5 年前

微信支付的demo,带完整的源码,可直接使用

微信支付的demo,带完整的源码,可直接使用
rar
发布资源于 5 年前

Ionic 修改Android sdk版本

在开发中,Ionic默认我们的targetSdkVersion为24,这时候我们没有这个版本的SDK,当然,你可以下载此版本的sdk,这里说个简单的方法。 *修改项目下的 platforms/android/project.properties 和platforms/android/CordovaLib/project.properties 中的target=“你有的sdk版本”*
原创
5565阅读
0评论
0点赞
发布博客于 5 年前

Java面向对象思想及其三大特性

面向对象: 1、面向对象 EveryThing Is Object。 面向对象是一种程序设计思想,计算机程序的设计实质上就是将现实中的一些事物的特征抽离出来描述成一些计算机事件的过程,这种抽象的过程中,我们把具体的事物封装成一个一个的整体进行描述,使被描述的对象具备一些系统性、整体性的的行为和特征,我们把这种设计思想称为面向对象。 2、面向对象与面向过程 2.1、面向过程是早期的程序语言
原创
657阅读
0评论
0点赞
发布博客于 5 年前

Android之Intent传对象

Android传递对象有两种方法,分别是让类实现serializable和parcelable接口。下面对这两种接口进行简单的介绍。1、作用 Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间
原创
397阅读
0评论
0点赞
发布博客于 5 年前

ListView之ImageLoader实现图片加载

最近一直忙着做项目,今天也是忙里偷闲,想写篇博客来巩固下之前在应用中所用的知识。之前我们可能会也会肯定遇到了图片的异步加载问题,然而我们也可能会遇到图片二次或多次加载,这是ListView的特性造成的,具体原因不在这里讨论,又或者是OOM等问题。今天要讲的是一个开源框架Imageloader,个人觉得非常的好用。 该框架在github的地址。https://github.com/n
原创
618阅读
0评论
0点赞
发布博客于 5 年前

SharedPreferences存储图片对象与获取

最近开发中需要将设置头像从网络中下载,然后存储到本地,优先判断本地是否存在这个头像。 1.将网络上的图片下载下来(用了AsyncTask), protected Bitmap doInBackground(String... params) { HttpClient httpClient=new DefaultHttpClient(); HttpGe
原创
3057阅读
0评论
1点赞
发布博客于 5 年前

Java输出1000以内的完数(完数是恰好等于它的因子之和)

一个数恰好等于他的因子之和,那么这个数就是完数,因子就是所有可以整除这个数的数,不包括这个数本身。 要求1000以内的完数,只要将一个数的因子求出来,加起来,比较下。上代码/** * */package com.alpha.javaexam;/** * @author Simon * @category 计算1000以内的完数 */public class AmicableNumb
原创
1651阅读
0评论
3点赞
发布博客于 5 年前

判断101到200之间素数的个数

素数:只能被1或者本身整除的数 方法,用for循环将数一个一个整除,将只能被1整除的打印出来,数能被本身整除不考虑。上代码。 代码中计算整除的个数是变量Z,只能被1整除的情况是z为2的时候package com.alpha.javaexam;/** * @author Simon * @category 计算100到200之间的素数 2016.5.4 */public class Pri
原创
1221阅读
0评论
0点赞
发布博客于 5 年前

ListView的优化

首先我们要知道listview的原理,它的每个item显示的时候都会调用adapter中的getview的方法,并且,在getview中寻找view的控件的时候,是每个控件都会去findViewById寻找一遍的,基于此,以及查询资料,小白弄清楚了这两个问题的优化方法。 1.我们需要重写baseadapter的getview方法,然后复用convertView。 2.把控件对象设置到viewho
原创
482阅读
0评论
0点赞
发布博客于 5 年前

去除listview和gridview的点击效果

我们都知道listview和gridview点击时可能会出现橙色的点击效果,不怎么美观,有的时候我们不需要这个点击的效果。很简单 直接上代码,只需要在listview或者gridview里面的xml布局文件加上android:listSelector="@android:color/transparent"就可以了
原创
820阅读
0评论
0点赞
发布博客于 5 年前

startActivityForResult+Intent实现下一个activity传值给当前activity

今天想在地址管理页面添加新地址,需要把添加的新地址里面的内容放到地址管理页面,之前用的是startactivity+intent 传值,一直报空指针,原因是因为当你在获取新地址内容的时候那个activity还没有oncreate。 然而。用startActivityForResult+Intent就可以实现了。requestcode和resultcode相当于标志,用来判断哪两个activity之
原创
2023阅读
0评论
1点赞
发布博客于 5 年前

Java实验:计算键盘输入三个数的和以及平均值

重点是获取键盘输入的值 Scanner scanner = new Scanner(System.in); int sum=scanner.nextint();下面贴出完整代码public class Average { /** * @param args */ public static void main(String[] args) { /
原创
9969阅读
0评论
2点赞
发布博客于 5 年前

Java实验:输出希腊字母

下面贴出代码public class Greece { public static void main(String args[]) { for (char i = 'α'; i <= 'ω'; i++) { System.out.print(" " + i); } }}
原创
1555阅读
0评论
1点赞
发布博客于 5 年前

Java实验:Java实现从键盘输入4位会员卡号,与随机数比较,百位相等的即为中奖者

题目要求是 3、 设某商场的抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员。要求: (1)从键盘接收4位会员号 (2)生成随机数 int random = (int) (Math.random() * 10); (3)算出会员号中在百位的数字号码 int baiwei = custNo / 100 % 10; 使用if-else实现幸运抽奖。下面贴出自己的代码,仅供参
原创
8602阅读
0评论
3点赞
发布博客于 5 年前

setclickable(false)不可用

昨天在项目开发中碰到一个问题,想把获取验证码的按钮在手机号码格式不正确的情况下设为不可点击的状态 if (!JudgePhoneNumber.judgePhoneNums(editText.getText() .toString())) {verificationcodeButton.setclickab
原创
1021阅读
0评论
0点赞
发布博客于 5 年前

Intent 进行activity 与activity之间的传值

activity之间不能直接调用值,因为当你开了另外一个activity的时候,另外一个activity已经销毁了。intent可以实现activity之间的传值。1、intent的putExtra参数一个键值对 在需要传输数据的activity写下列代码Intent intent = new Intent(RegisterActivity.this, Sec
原创
833阅读
0评论
1点赞
发布博客于 5 年前

android控件SwipeRefreshLayout实现下拉刷新

新手写博文,写的不好,还请见谅。Google为我们推出的控件可以简单的实现下拉刷新的功能,但是这里要注意的是,我们需要引入v4的jar包,并且在xml文件引用SwipeRefreshLayout。 1.xml文件引用SwipeRefreshLayout,代码如下 <android.support.v4.widget.SwipeRefreshLayout xmlns:a
原创
387阅读
0评论
0点赞
发布博客于 5 年前

Android的Spinner的使用

最近在学Android基础,为了方便以后的学习,申请了一个博客,来记录自己的学习历程,写不好的地方还请多多指教。谢谢。 Spinner 作用是实现下拉列表,这里用到的适配器是arrayadapter。 方法摘要: 1.适配器设置下拉样式 adapter.setDropDownViewResourc
原创
898阅读
0评论
0点赞
发布博客于 6 年前

ProgressBar的使用以及实现进度条的增减

ProgressBar 的使用,以及通过按钮实现增加和减少第一进度和第二进度条。 重要方法提要 设置窗口特征: requestWindowFeature(Window.FEATURE_PROGRESS); 获取进度条: int first=progressBar.getProgress(); int second=progressBar.getSecondaryProgress
原创
1302阅读
1评论
1点赞
发布博客于 6 年前

GridView的使用

1. 布局,一个为gridview布局,一个是里面的内容的布局。    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"     android:gravity="center">         
原创
304阅读
0评论
1点赞
发布博客于 6 年前