自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android 记一次 Default Activity not found

项目莫名其妙出现了Default Activity not found的问题,网上有很多各种各样的答案,但每个人的情况可能会不一样,解决方案也不是每个人都适合,下面记录下我个人解决种问题的过程:1、首页我在网络找到下面这篇文章,相对其他文章这篇还是比较靠谱些,起码评价这块是比较高的。解决Android studio 出现Warning: Default Activity not found的方...

2019-12-07 21:49:23 114

原创 MarkdownPad2安装教程

虽然现在有很多厂商推出了Markdown书写平台,要么不能本地上传图片,要么不能免费使用,要么不能离线操作,其实我喜欢就是MarkdownPad的离线操作,同时还可以修改css样式改变Markdown的显示样式。

2019-11-11 14:37:38 25370 46

原创 亿图9.3破解版

亿图图示是一款很好用的作图软件,使用简单方便,包含大量的实例库和模版库。可以很方便的创建流程图、网络拓扑图、组织结构图、商业图表、方向图、UML、软件设计图、线框图、信息图、思维导图、建筑设计等等。亿图9.3安装包下载亿图9.3破解补丁下载安装包也可以直接去官网下载 http://www.edrawsoft.cn/步骤:1、下载安装之后先不要运行2、解压亿图9.3破解补丁,将如下四...

2019-01-15 15:07:16 16696 49

原创 快速处理编译运行compileDebugJavaWithJavac问题

快速处理编译运行AS compileDebugJavaWithJavac问题compileDebugJavaWithJavac是什么,从字面上看就是在debug调试的执行javac命令,编译器遇到不能解析的内容而抛出的异常。上面一大片报红,很难定位错误的原因在哪里,在Terminal执行gradlew compileDebugJavaWithJavac命令能快速找到原因:下面是命令执行结...

2018-12-10 16:07:07 7109

原创 Android Studio IDE常用设置与快键键、插件

1、IDE编码全局设置UTF-8,避免中文乱码settings -> editor -> File Encodings2、设置IDE的编码区的文字大小和样式settings -> editor -&am

2018-12-01 11:16:19 535

原创 SQLite(五) - Java数据库连接(JDBC)

首先下载sqlite-jdbc.jar 包,接着把jar包导入项目中,我这里是使用Android Studio开发工具,将jar包放在了libs目录下在build.gradle中添加依赖 implementation files('libs/sqlite-jdbc-3.23.1.jar')使用Java连接数据库,有三个基本步骤加载数据库驱动建立数据库连接创建SQL执行对象Stat...

2018-11-27 14:33:57 154

原创 SQLite (四)- 数据修改与删除、排序

修改数据在SQLite中用update来修改数据已有的数据,可以使用where子句设置约束修改的范围,如果不使用where子句来约束update语句,会修改表中所有对应类型的数据。比如下面表中的李毅和赵敏都涨2000工资,此时我们要去更新表中的数据,分别设置成10000和12000,可以通过update和where语句共同配合来修改表中的wage数据。实现如下:如果不使用where子句...

2018-11-26 22:57:29 1938

原创 SQLite(三) - 数据查询

在查询数据之前,先了解SQL的运算符,主要为Where查询子语句的使用做个铺垫,这个与java运算符是相似,比较好理解,分为算术运算符、比较运算符、逻辑运算符、位运算符,主要了解下逻辑运算符,其他的运算符与java的很类似。我们通过Where子语句来查询获取数据,一般where子句会用在select、delete、update等语句之后,用来筛选过滤符合条件的数据。比如我们现在查询下面表的全...

2018-11-26 18:11:31 386

原创 SQLite(二) - 创建表与添加数据

上篇学习了SQLite的安装与创建数据库,这节主要是学习表的创建与数据的添加。创建表在学习表的创建之前,先了解下SQLite数据类型,因为在数据库保存每一列数据都有对应的数据存储类型,比如整数、文本字符串、浮点值……打开上次创建userDB.db数据库,执行sqlite3.exe userDB.db命令,接着创建一个user表,执行创建表的SQL语句: create table user...

2018-11-26 11:30:21 3285

原创 SQLite (一) - 简介与安装使用

前言:在Android应用中有很多开源数据库框架可以选择使用(GreenDao、LitePal、Realm……),帮我们封装的很好,性能也很好使用也很方便,大大的提高我们的开发效率,为什么这次我会选择从头开始学一遍SQLite了,开源框架确实是很方便,使用多了时间久了,如果不进行适当巩固基础性的东西,我们会慢慢淡忘掉;也正好最近在做一个IM应用,是一个老项目(应该是14年启动的项目),在即时通信...

2018-11-25 21:53:45 194

原创 Android组件化之组件通信

本文是续上一篇Android组件化方案实践与思考文章一些思考,主要是针对组件间通信,比如:每个组件如何初始化各自的数据Activity间如何跳转、Fragment实例获取、如何调用普通类的函数如何在一个组件中通知另外一个组件数据变化这些问题是我们在组件化过程中都会遇到问题,在项目中肯定远远还不止这些问题,在这样我遇到的问题记录下来,有不对的地方希望大家多多指点!!组件数据初始化常规...

2018-11-20 23:37:28 1307

转载 Android 常用 mimeType 表及用法

  常用mimeType表:文件类型mime名称 文件类型mime名称3gpvideo/3gpp pdbchemical/x-pdbaabapplication/x-authoware-bin pdfapp...

2018-11-20 11:28:24 213

原创 Android组件化方案实践与思考

Demo地址:https://github.com/751496032/ComponentDemo效果图:背景Android从诞生到现在,不知不觉的走过十多个年头了,也产生了很多App,随着项目的推进不断的迭代,而App也从最初的单一功能演变成多任务功能,各种业务的错综复杂,开发人员也不断的增加,如果架构不做调整优化,会给开发带来很大的困难:各种业务代码耦合性及高,代码臃肿会越来越高,...

2018-10-21 01:25:47 255

原创 Android问题集锦(十七)- Error running 'app': Please select Android SDK

在AS中运行项目,提示报错如下:Error running 'app': Please select Android SDK其实这个问题之前遇到一次,也解决了,解决方案如下:打开Android Studio报错“Error running ***: Please select Android SDK”当我重新按照上述的方法去解决时,发现怎么操作都不生效,还是这样的问题,查阅了好多资料最...

2018-10-13 22:47:22 176

原创 Android问题集锦(十六)- adb启动命令失败Error while Launching activity 解决方案

Android Studio在编译运行调试时,报如下错误:Error while Launching activity 这个问题遇到了两次了,第一次的时候以为是手机的原故,就换了一台手机测试,就不会出现这种adb启动命令错误,后面这台手机也出现了这种情况,当时真的无奈是什么原因造成的,在网上找了很多解决方案,大部分都是clear project,重新编译运行可以解决,试了很多次都不行了,后...

2018-09-27 21:10:57 1980 5

原创 从源码角度解析 - ScrollView嵌套ListView只显示一行的问题

上面的布局在默认情况下,是达不到我们想到的效果,只会显示ListView的一行内容,同样的我们可以通过反推的方式,来查找原因的所在。 为何只会显示一行??我们可以先看看ListView的onMeasure方法

2018-09-04 23:23:42 105

原创 从源码角度解析 - ScrollView嵌套ViewPager不显示的问题

以上布局的方式(ScrollView嵌套ViewPager),在默认情况下是达不到我们想要的效果,整个ViewPager是无法显示的,网上已经有很多解决方案,但很少有文章解释为什么要这样修改,是什么原因造成ViewPager显示不了,现在我们从源码的角度来分析问题的所在。 既然是无法显示,那可能是在ViewPager测量过程中出现了异常,可以先从源码看下ViewPager在onMeasure方法是如何构成的

2018-09-04 22:44:46 602

转载 Source Insight 4.0 最简单的破解安装

来源于 https://blog.csdn.net/biubiuibiu/article/details/78044232 ...

2018-08-26 22:46:17 4254

原创 Android问题集锦(十五)- 成功解决org.gradle.api.internal.tasks.compile.CompilationFailedException

在一次引入第三方库之后,在Run运行时突然报以下错误: 'Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.' 经过一轮Google后,网上说的原因是: ...

2018-08-15 18:20:22 28441 7

转载 源码阅读的经验总结

Android进阶之旅 - 源码阅读的经验总结 在长沙待的那些年,身边所看到的大概可分为两类人,一类是不断反复的做业务逻辑,只求功能能够写出来,每天重复上下班,不想过多的去折腾;还有一类是不断的反思总结和学习,不只停留在做的层次上,是真正的喜欢做这行,且觉得非常有意思。没有...

2018-08-02 21:58:05 296

原创 View的事件体系 - View基础知识

什么是ViewView是Android所有控件的基类,任何一个控件都是View的子类。 坐标系关于Android的坐标系的理解可以从以下几点手机屏幕坐标系与数学坐标系的区别View坐标系MotionEvent的get与getRaw获取坐标的区别...

2018-08-01 23:28:40 155

原创 Android问题集锦(十四)- The option 'android.enableAapt2' is deprecated and should not be used anymore.

今天在升级到Android studio3.1后,编译运行程序报以下异常: 在Java compiler已经有很明显的警告提示了:WARNING: The option 'android.enableAapt2' is deprecated and should not be used anymore.意思就说android.enableAapt2已经被弃用了,不能被使用了。...

2018-08-01 21:50:57 10400 3

原创 Android进程间通信 - 几种方式的对比总结

什么是RPCRPC(Remote Procedure Call)即远程过程调用,它是一种通过网络从远程计算机程序上请求服务,在不需要了解底层网络技术的协议下,即可获取计算机进程中的数据。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC在OSI网络通信7层模型中,位于传输层与应用层之间,即位于会话层: RPC实现模式,就是我们常说的C/S结构,引用百度百科的定义:...

2018-07-29 21:12:45 13991

原创 Android进程间通信 - Socket使用(TCP、UDP)

在使用Socket实现进程间通信前,先对网络协议相关知识进行简单回顾。网络分层一般情况会将网络分为5层:应用层     常见协议:HTTP、FTP、POP3等传输层     常见协议:TCP、UDP网络层 &amp

2018-07-28 19:38:30 3430

原创 Android进程间通信 - ContentProvider内容提供者

简介ContentProvider主要用于在不同的应用程序间实现数据共享的功能,允许一个程序访问另外一个程序中的数据,还能保证数据访问的安全性。 是Android跨进程实现数据共享的标准方式。ContentProvider相当于进程间的搬运工,对数据一系列的操作(CRUD)数据源可以是数据库(SQLite等)、文件、xml、网络等等。统一资源标识符(URI)UR...

2018-07-22 20:37:48 1910

原创 Android进程间通信 - Messenger的使用和理解

Messenger简介Messenger是基于Message对象进行跨进程通信的,类似于Handler发送消息实现线程间通信一样的用法。Messenger使用下面写个客户端跨进程发送消息到服务端,服务端接受到立即回复的例子。服务端实现流程首先创建一个Handler对象接着创建一个Messenger对象,并把Handler对象以形参传入Messenger中最后通...

2018-07-18 02:16:47 4121

原创 Android进程通信 - AIDL使用解析与Binder浅谈

在上篇我们知道了AIDL的基本使用Android进程通信 - AIDL的使用方法,然而还存在使用上的疑问,比如:AIDL是怎么实现IPC的?服务端创建Binder对象或者客户端AIDL接口对象,都调用Stub()方法实现,那么该方法具体有哪些操作? 什么是Binder?其实上面这三点可以统称理解为AIDL本质是什么;下面重点对AIDL文件生成的java文件进行解析,在创建了AIDL...

2018-07-16 22:31:11 499

原创 Android进程通信 - AIDL的使用方法

AIDL简介AIDL是Android接口定义语言,有点类似于我们开发中的普通接口。由于不同进程间不能共享内存,为了解决进程间通信的问题,可以通过AIDL接口语言来实现进程间的通信。AIDL文件支持的数据类型基本数据类型(int、long、char、boolean、double)String和CharSequenceList和Map集合 集合内元素必须是AIDL支持的数据类型服...

2018-07-15 02:17:20 1759 2

原创 Android问题集锦(十三) - Error:Tag <manifest> attribute package has invalid character '"'.

问题描述: 在编译运行时报mainfest文件清单中有无效的字符 从错误日志提示无效字符是在声明Activity组件出错了,出现了 ” 无效的字符,于是开始检查manifest文件中是否还有 ” 无效字符,按理如果有无效字符的话,manifest文件在编译期就会报红提示错误,类似这样 但实际并没有这样的错误提示,说明Activity在编译期间声明是没错的,那只有在构建期间出现了无效...

2018-07-11 15:29:45 3642

转载 Android问题集锦(十二) - AndroidStudio 读取.properties里面的内容乱码解决办法-

需求:需要appname=app 放在gradle.properties文件中,当build.gradle 引用中文appname的时候,是会出现乱码的 原因:国内下载的Androidstudio 默认情况gradle.properties文件是 GBK编码,需要替换成utf-8,windows有可能还是不行,需要重启一下电脑;类似的ide软件,服务器的,Pyt...

2018-07-11 13:44:51 638

原创 Android进程通信 - 序列化Serialzable与Parcelable

序列化简介定义序列化是将对象的状态信息转换为存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从储存区中读取或反序列化对象的状态,重新创建该对象。 简单而言: 序列化是将对象转换成字节流 反序列化是将字节流转化成对象。用途主要用途:序列化将对象写成字节流持久化保存在内存、文件、数据库中将序列化对象通过网络...

2018-07-11 01:24:59 1307

原创 Android基础 - BroadcastReceiver全面解析

简介BroadcastReceiver,同样是Android四大组件之一,有两个重要角色:广播发布者、广播接受者。使用场景及作用作用用于接受或者监听应用发出来的广播,并作出相应的响应。使用场景用于不同组件间的通信,包括应用内和不同应用间的交互通信。监听系统资源的变化,如网络变化、SD卡状态等多进程的通信实现原理是典型观察者模式的应用,基于消息发布...

2018-07-08 22:55:37 284

原创 Android基础 - Service实例深入理解

上篇学习了Service一些基础知识,知道了在Service做耗时任务(网络请求、IO等等)需开启一个线程,否则会导致ANR,接下来通过实例加深Service的使用理解。Service种类及特点Service几种典型实例下面以模拟下载文件为例子1、不可交互的后台服务不可交互的后台服务即是普通的Service,是通过startService方法启动,其生命周期顺序...

2018-07-07 00:39:19 199 2

原创 Android问题集锦(十一) - Android中的空格编码 string.xml前后加空格的技巧

在string.xml文件中使用空格键设置空格是无效的: &amp;lt;string name=&quot;login_password&quot;&amp;gt;密 码&amp;lt;/string&amp;gt;效果图: 需要用转义符&amp;amp;#160;才会生效&amp;lt;string name=&quot;login_password&quot;&amp;gt;密&amp;amp;#160;&amp;amp;#160;&amp;amp;#160;&amp;

2018-07-03 09:28:37 247

原创 Android基础 - Service生命周期(一)

Service简介四大组件之一,与Activity不同之处,没有UI界面,是在后台运行的组件。适合执行一些长期在后台运行和没有用户交互的任务。默认是在主线程运行,若要执行耗时操作,需放在开启子线程进行。Service工作状态启动状态:主要用于执行后台计算 startService:启动服务stopService:停止服务绑定状态:主要用于其他组件(Activity、Fra...

2018-07-03 01:21:30 117

转载 PopupMenu弹出式菜单的基本使用

PopupMenu,弹出菜单,一个模态形式展示的弹出风格的菜单,绑在在某个View上,一般出现在被绑定的View的下方(如果下方有空间)。注意:弹出菜单是在API 11和更高版本上才有效的。核心步骤:(1)通过PopupMenu的构造函数实例化一个PopupMenu对象,需要传递一个当前上下文对象以及绑定的View。(2)调用PopupMenu.setOnMenuItemClickList...

2018-07-02 17:28:43 9451

原创 Android基础 - 重温Activity的启动模式

我们知道一个应用可能存在多个Activity,在一个Activity除了可以启动本应用的另一个Activity,还可能是其他应用的Activity,比如我们常用的分享朋友圈、拍照等等功能,就是典型的跨应用的交互,那么在Android中是如何管理这些Activity的呢?接下来先了解下Activity的任务栈

2018-07-01 14:31:15 99

原创 Android基础 - 重温Activity生命周期

《Android开发艺术探索》买了好久了,将近有两年了,一直没有好好系统的看过,在浑浑噩噩的过日子,浪费好多时间;现在从头再来,坚持下去给自己一个希望。典型的生命周期7个生命周期方法onCreate:Activity正在被创建 初始化布局资源和数据onRestart:Activity正在重启启动,从不可见变为可见状态 按Home键返回桌面,再点击桌面图标返回App...

2018-06-30 00:50:40 378

原创 Android问题集锦(十) - More than one file was found with OS independent path 'META-INF/DEPENDENCIES'

报错:Error:com.android.builder.merge.DuplicateRelativeFileException:More than one file was found with OS independent path 'META-INF/DEPENDENCIES'在报错的module下的builde.gradle文件中加入如下配置项:android{ //处理所有报M...

2018-06-29 23:17:12 4109

原创 设计模式学习 - 总结

经过了一个多星期的学习,设计模式总共有23种,只学了开发中常用的9种模式,整个学习计划分为两个阶段,第一阶段的学习就暂告一段落了。第一阶段:主要是设计模式的UML类图、定义理解、代码简单实现。第二阶段:主要结合Android源码中所涉及的设计模式,加深对设计模式的理解及灵活应用。下面是计划安排内容:设计模式六大原则创建型设计模式单例模式简单工厂模式工厂方法模式建造...

2018-06-26 22:29:58 88 2

提示
确定要删除当前文章?
取消 删除