![](https://img-blog.csdnimg.cn/20190816142228536.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android-应用技术
文章平均质量分 71
开发应用层的一些技术总结
夜辉疾风
授人以鱼= =true?鱼:渔
展开
-
Flutter开发环境配置
Windows下用Android Studio开发Flutter项目的环境配置//下载flutter SDKgit clone -b master https://github.com/flutter/flutter.git//配置环境变量,改为国内镜像FLUTTER_HOME:D:\FlutterSdkpath:%FlutterSdk%\binkey:PUB_HOSTED_URL value:https://pub.flutter-io.cnkey:FLUTTER_STORAGE原创 2020-09-18 18:55:17 · 868 阅读 · 0 评论 -
Android组件化——1,build.gradle
文章目录conf.gradleproject build.gradlemodule build.gradleAndroidManifest.xmlJava.classconf.gradle在项目根目录下新建conf.gradle文件,在其中写项目的通用配置ext{ packageType = 0 //马甲包配置;0,马甲包1;1,马甲包2;2,马甲包3 isMainType = 0;//默认主程序入口;1,马甲包1入口;模块模式true;发布模式false //通用配置原创 2020-09-07 15:13:20 · 555 阅读 · 0 评论 -
Android 进程保活
转载地址 参考资料:gitbub上的一个进程保活的库安卓进程保活解决方案Android进程保活招式大全双进程守护APP保活方案最近查看进程保活的各种资料,实现方式无非就那么几种,可以参考上面的资料链接,本篇博文对这些实现进行了分析和测试,并把从中体会到的知识点做个总结汇总,算是加深相关知识的理解。本篇博文以github的一个库为例,来逐步讲解说明该库总的来说就是整合了:一像素Act...转载 2019-11-12 17:19:20 · 1511 阅读 · 0 评论 -
Android数据库设计——4,动态更新数据库、数据库dao层拓展
动态更新获得从服务器传来的更新数据,解析成可执行的sql语句public class UpdateDbBean { private CreateVersion createVersion;//需要升级的数据库 public CreateVersion getCreateVersion() { return createVersion; } ...原创 2019-10-29 20:26:48 · 711 阅读 · 0 评论 -
Android数据库设计——3,自动化 分库、分表
分库、分表用户量大的时候必须去分库分表,分库分表也需要自动化分库前置工作/** * Describe:修改注解,增加主键标识 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface DbField { String value();//表列名 boolean ...原创 2019-10-29 20:21:42 · 1401 阅读 · 0 评论 -
Android数据库设计——2,面向对象(ORM)操作表:增、删、改、查
操作表操作表之前的优化/前置工作缓存表字段public class BaseDao<T> implements IBaseDao<T> { //...其他代码 //创建一个缓存,缓存表的字段对应的java实体类成员变量 //key是表的字段 //value是对应的java实体类的成员变量Field对象 private HashMa...原创 2019-10-29 20:16:59 · 282 阅读 · 0 评论 -
Android数据库设计——1,面向对象(ORM)建库、建表
创建数据库创建一个数据库工厂类,用于创建数据库操作对象和表的Dao对象//数据库工厂类public class BaseDaoFactory { //该对象是单例的 private static final BaseDaoFactory instance = new BaseDaoFactory(); //数据库对象 private SQLiteDataba...原创 2019-10-29 20:13:25 · 1208 阅读 · 0 评论 -
android中message、messageQueue、Handler、looper的关系
定义message(消息): 1,线程间交流的消息 2,通常用于后台数据传递给ui线程 3,在Handler类中的handleMessage方法中得到单个的message进行处理messageQueue(消息队列): 1,用来存放通过Handler发布的消息 2,通常附属于某一个创建它的线程 3,通过Looper.myQueue()得到当前线程的messageQueuehandler(处原创 2017-10-19 17:41:04 · 276 阅读 · 0 评论 -
Hermes——跨进程通信(IPC)框架,使用介绍
概述Github地址:https://github.com/Xiaofei-it/HermesAndroid进程间通信IPC框架像调用本地函数一样调用其他进程的函数在本地进程创建其他进程类的对象在本进程获取其他进程的单例在本进程使用其他进程的工具类支持进程间函数回调,调用其他进程函数的时候可以传入回调函数,让其他进程回调本进程的方法自带内存优化,内置两个垃圾回收器,地进程在远...原创 2019-08-16 14:19:10 · 3528 阅读 · 1 评论 -
Android MVP 最优实现
概述Model:执行逻辑View:视图展示Presenter:业务处理Contract:当前view的契约者Contract契约者,相当于约束一个activity或者fragment使用的mvp中的具体哪些方法public interface BaseContract { interface Model { void getVoid(); ...原创 2019-06-25 16:36:37 · 406 阅读 · 0 评论 -
android MVVM开发框架——(4)DataBinding绑定view自定义属性
通常情况下我们会自定义标签来自定义view的属性供我们自己使用,但是如何在databinding中添加自定义属性呢? 我们来看看1,在xml中定义属性<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http原创 2017-10-31 22:14:53 · 3105 阅读 · 0 评论 -
android MVVM开发框架——(3)DataBinding 应用于RecyclerView
android MVVM开发框架——(1)DataBinding 基础应用android MVVM开发框架——(2)DataBinding 应用于ListView如果你对mvvm或者databinding不太熟悉的,建议先去看看前两篇博文原创 2017-10-31 21:25:45 · 4563 阅读 · 1 评论 -
android MVVM开发框架——(2)DataBinding 应用于ListView
android MVVM开发框架——(1)DataBinding 基础应用 附上mvvm中databinding的基本应用链接,只有找到了基本用法才能继续进阶原创 2017-10-31 20:29:35 · 4589 阅读 · 0 评论 -
android MVVM开发框架——(1)DataBinding 基础应用
概述Model :基本业务逻辑 View :视图内容 ViewModel: 将前面两者联系在一起的对象作用它通过双向绑定(松耦合)解决了Model与View联系比较紧密的问题。 mvvm的双向绑定有一定的局限性,后面会仔细讲到。配置android 官方早在Android Studio 1.3、Android Gradle插件1.5之后默认添加了,只需要在项目的build.gradle中配置:a原创 2017-10-31 20:20:52 · 1237 阅读 · 0 评论 -
RxJava——响应式和区域化的优秀框架(java&android)
在java和android开发中非常的牛逼。主要的优点是响应式编程,逻辑区域化。今天,我也来说一说关于Rxjava的使用方法。后期会逐步讲到RxBinding在android中的使用和Rxjava同Retrofit结合的例子。原创 2016-05-23 19:44:53 · 3774 阅读 · 1 评论 -
Retrofit2.0+RxJava+RxAndroid——强强联合的网络请求框架
最近看了很多关于Retrofit和Rxjava的文档介绍。终于在弄清Rxjava后顺利的弄懂了Retrofit。网上有很多人都介绍了它们的联合使用,但是我看过之后理解不是太好。可能我太笨。 不过,今天写这篇博客的目的就是想来说说它们之间如何使用以及使用的时候遇到的坑。这两者的关系并不大,但是联合在一起使用是非常简便的。Rxjava的响应式编程加上Retrofit的注解式请求用起来是非常爽的。原创 2016-05-24 18:35:28 · 25699 阅读 · 6 评论 -
android MVP——mvp架构的应用和优化
MVP架构在android还是很好用的。我也在试着将mvp用在项目中。下面我就来说说mvp模式的应用和优化。mvp模式的概念MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。比较mvc:1,在MVC里,View是可以直接访问Model的,View里会包含Model信息,不可避免的还要包括一些原创 2016-05-27 20:06:45 · 5762 阅读 · 4 评论 -
android 五种存储方式——Sqlite
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,networkSqlite定义 1,SQLite是轻量级嵌入式数据库引擎 2,支持 SQL 语言 3,利用很少的内存就有很好的性能SQLiteOpenHelper//创建一个数据库,创建表结构,更新表结构public cla原创 2017-10-20 20:03:04 · 1983 阅读 · 0 评论 -
android 五种存储方式——File
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,networkFile权限<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android原创 2017-10-20 20:24:38 · 1083 阅读 · 0 评论 -
android 五种存储方式——ContentProvider
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,networkContentProvider注意: 大多数ContentProvider使用Android文件系统或者SQLite数据库来保持数据,但是也可以以任何方式来存储。在清单文件中注册一个自定义ContentProvite原创 2017-10-20 20:38:47 · 1956 阅读 · 0 评论 -
android 五种存储方式——Http
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,httpHttphttp协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的tcp协议:运输层协议,通常也叫做tcp/ip协议,主要解决数据如何在网络中传输udp协议:运输层协议,用户数据报协议,不可靠的原创 2017-10-20 20:58:55 · 1122 阅读 · 0 评论 -
android 五种存储方式——SharedPreferences
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,httpShardpreferences特性: 1,使用key-value键值形式保存 2,适合保存少量的数据 3,数据的格式非常简单:基本类型、字符串 4,修改存储的数据是SharedPreferences.Editor接口实现Sh原创 2017-10-20 19:45:41 · 1540 阅读 · 0 评论 -
Android Activity的生命周期及启动模式
activity启动模式standard singleTop singleTask singleInstance<activity android:name="com.lh.test.testActivity" android:launchMode="standard" /> standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,原创 2017-10-11 20:27:21 · 661 阅读 · 0 评论 -
Android ContentProvider内容提供者
定义 ContentProvider为不同的软件之间数据共享,提供统一的接口 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据主要方法 public boolean onCreate()// 在创建ContentProvider时调用 public Cursor query(Uri, String[], String, Strin原创 2017-10-11 21:56:31 · 523 阅读 · 0 评论 -
android AIDL,跨进程通讯
1,AIDL的全称是Android Interface Definition Language 2,目的是为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信 3,建立一个扩展名为aidl的文件 4,如果aidl文件的内容是正确的,ide会自动生成一个Java接口文件(*.java) 5,在AndroidManifest.xml文件中配置AIDL服务 6,< action >标签的原创 2017-10-16 21:10:59 · 406 阅读 · 0 评论 -
android startservce与bindService
这里着重说一下bindService的运行过程,以及两者的区别两者的区别:Started Service,startService()//开启了服务,即会与服务失去联系,两者没有关联。即使访问者退出了,服务仍在运行。如需解除服务必须显式的调用stopService方法Bound Service,bindService()//调用者与服务绑定在一起的。当调用者退出的时候,服务也随之退出。用于需要与服务原创 2017-10-16 19:53:54 · 434 阅读 · 0 评论 -
Android Service服务
service特性1,Started Service,startService()//开启了服务,即会与服务失去联系,两者没有关联。即使访问者退出了,服务仍在运行。如需解除服务必须显式的调用stopService方法 2,Bound Service,bindService()//调用者与服务绑定在一起的。当调用者退出的时候,服务也随之退出。用于需要与服务交互。 3,默认情况,如果没有显示的指 s原创 2017-10-11 21:27:47 · 353 阅读 · 0 评论 -
Android Fragment的生命周期及使用
fragment简介fragment是andorid3.0引进的,它的优点在于做局部内容更新更方便Fragment 的好处:1,Fragment 可以使你能够将 activity 分离成多个可重用的组件,每个都有它自己的生命周期和UI。2,Fragment 可以轻松得创建动态灵活的 UI 设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。3, Fragment 是一个独立的模块,紧紧地与 activ原创 2017-10-11 20:40:31 · 463 阅读 · 0 评论 -
Android BroadcastReveiver广播
广播类型普通广播,通过Context.sendBroadcast(Intent myIntent)发送的 - 所有监听该广播接受者都可以监听到该广播 - 同级别接收先后顺序是随机的(无序) - 级别低的后收到广播 - 接收器不能截断广播的继续传播,也不能处理广播 - 同级别动态注册高于静态注册有序广播,通过Context.sendOrderedBroadcast(intent,原创 2017-10-11 21:01:32 · 532 阅读 · 0 评论 -
Android中使用AspectJ(AOP)实现切面的三种功能(执行前、执行后、环绕)
Andorid Studio中配置AspectJapp module中dependencies { implementation 'org.aspectj:aspectjrt:1.9.4'}project module中buildscript { dependencies { classpath 'org.aspectj:aspectjtools:1.9.4'...原创 2019-08-02 23:24:30 · 1095 阅读 · 0 评论 -
android studio搭建cmake的ndk环境
下载所需资源android studio中下载Ndk、LLDB、CMake创建可开发的jni项目环境新建jni文件路径项目右键: new -> folder -> Jni Folder文件存放路径:“src/main/cpp/”创建cmake配置文件CMakeLists.txta. 配置信息详见地址https://d.android.com/studio/pro...原创 2019-06-25 16:48:28 · 458 阅读 · 0 评论 -
android 自定义控件自定义属性
我们在自定义控件的时候必不可少要去自定义一些属性,使这些自定义的属性能够在xml中赋值然后供我们使用。如何去自定义属性? 1,定义attrs.xml文件 2,在布局文件中标注、赋值 3,在自定义控件中获取、使用 4,测试定义原创 2017-10-30 22:17:00 · 923 阅读 · 0 评论 -
android https——okhttp实现https请求
定义: HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer 中文含义为“超文本传输协议在安全加密字层” 简单来说就是加密数据传输和安全连接。https和http有什么区别 在HTTP的之下加入了SSL (Secure Socket Layer),安全的基础就靠SSL。 SSL位于TCP/IP和HTTP协议之间https与原创 2017-10-23 18:41:54 · 10741 阅读 · 1 评论 -
android native+h5——混合开发初步,通过js交互数据
想要编写native+h5混合的app,首先你必须要知道一些js/html/css的东西,特别是js。我有一两年没有碰前段的东西了,也忘记的差不多了,不过混合开发的初步还是没问题的。接下来就来说说native+h5 混合开发的第一步,伟大航海路线的第一步,弄一条船。原创 2016-11-28 18:14:26 · 7505 阅读 · 0 评论 -
android IDE——通过DDMS查看app运行时所占内存情况
在android内存优化方面,我们不可能做到没有大内存的占用情况。所以有时候要清楚我们的app到底占用了多少内存,哪一步操作占用了多少的内存。这时候,android的ddms中提供了一个工具,是可是实时查看app运行时的内存使用情况。原创 2016-05-12 20:01:13 · 11380 阅读 · 0 评论 -
java socket编程(1)——利用socket实现聊天之消息推送
网上已经有很多利用socket实现聊天的例子了,但是我看过很多,多多少有一些问题存在。 这里我将实现一个比较完整的聊天例子,并解释其中的逻辑。原创 2016-09-18 10:30:46 · 16798 阅读 · 3 评论 -
java socket——心跳包
首先先说说心跳包在socket连接中的意义: 通过socket连接的双方为了保证在一段时间未发消息不被防火墙断开连接或者使对方及时知道自己是否已经断线而定期给对方发送的某些特殊标识字符,这个字符可以根据双方自定义,没有实际的通讯意义。 而定制的时间也是双方协商后定制的。原创 2016-09-26 10:48:24 · 17182 阅读 · 3 评论 -
android 图文混排——文字适配表情(资源图片、sd卡图片)
我们在做项目的时候会遇到很多地方需要使用图文混排的功能。 特别是聊天、论坛和贴吧之类的。这里我主要以EditText这个控件来说,TextView同样适用。因为EditText上实现图文混排比Textview上要复杂,且所实现的功能Textview上同样适用。这里利用了正则表达式和Spannable来进行图文混排。原创 2016-09-26 12:10:42 · 2319 阅读 · 0 评论 -
android bluetooth——蓝牙的开启、搜索、配对与连接
android 的blt仅仅支持api 18 android4.3以上,有的功能甚至需要api 19 android4.4; 所以我们在做blt项目之前一定要清楚可用的版本范围。我要讲述的是打开blt大门的操作。这些操作就是如何打开blt、如何搜索到其他设备、如何配对选中设备、如何通过mac地址连接之前已经配对过的设备以及连接成功的两个(或一对多个)设备如何通讯。在学习blt知识前要先搞清楚,bl原创 2016-09-30 12:18:03 · 87600 阅读 · 31 评论 -
android NDK——搭建Android Studio的NDK环境
我接触jni的时候正在用android studio,所以我记录一下在as上部署ndk环境的步骤。首先先看一下大概步骤: 1,下载ndk 2,配置环境变量 3,配置as属性 4,java测试代码 5,创建.h的头文件 6,创建.c的测试c代码 7,生成so文件 8,测试ndk环境ok。接下来我们就来一步一步的实现。原创 2016-10-11 15:18:01 · 30197 阅读 · 5 评论