android
文章平均质量分 71
android 原生开发
awodefengduanwu
这个作者很懒,什么都没留下…
展开
-
Retrofit基本使用
1.Retrofit基本使用首先来了解下Retrofit是什么,在官网中对于Retrofit的描述是这样的:A type-safe HTTP client for Android and Java.适用于Android和Java的类型安全的HTTP客户端。可以理解成一个封装好的网络请求库。接下来学习一下Retrofit的基本使用方法:在app根目录的build.gradle文件中加入依赖:compile 'com.squareup.retrofit2:retrofit:2.3.0'原创 2021-05-10 17:04:27 · 643 阅读 · 0 评论 -
mvvm模式
一、前言MVP 中我们说过随着业务逻辑的增加,UI 的改变多的情况下,会有非常多的跟 UI 相关的 case,这样就会造成 View 的接口会很庞大。而 MVVM 就解决了这个问题,通过双向绑定的机制实现数据和 UI 内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了在 View 层中写很多 case 的情况,只需要改变数据就行。二、MVVM详解2.1、MVVM 设计图:一般情况下就这两种情况,这看起来跟 MVP 好像没啥差别,其实区别还是挺大的。在 MVP 中 Vi原创 2021-05-10 17:03:12 · 206 阅读 · 0 评论 -
ObservableField和MutableLiveData
ObservableField和MutableLiveDatapublic ObservableField<String> domainName = new ObservableField<>("");public MutableLiveData<Boolean> isShowDialog = new MutableLiveData();作用两个都是定义一个观察者变量,以便达到更新数据的作用。区别ObservableField一般是和布局文件x原创 2021-05-10 17:02:25 · 1624 阅读 · 0 评论 -
Android Retrofit详解
前言Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装使用步骤1.添加Retrofit库的依赖:implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com.squareup.retrofit2:converter-gson:2.0.2' implementation 'com.google.原创 2021-05-06 14:02:41 · 152 阅读 · 0 评论 -
我们为什么要使用 DataBinding
本文默认读者有一定的Android开发经验,对Android Annotations和DataBinding技术也有了简单的了解。文章通过三种不同方式代码的对比,最后总结说明为什么要使用DataBinding的技术。功能三种不同方式代码需要实现的功能是在登录界面里,通过监听用户名和密码输入框的文本变化,动态控制登录按钮点击状态。第一种:普通实现采用普通方式编写代码,可以发现会有很多的多余地方,大部分都是重复的工作:实例化view:findViewById(...)添加文本监听:addTextC原创 2021-05-06 13:45:55 · 643 阅读 · 5 评论 -
Android中UI线程与后台线程交互设计的5种方法
android提供了以下几种方法,用于实现后台线程与UI线程的交互。1、handler2、Activity.runOnUIThread(Runnable)3、View.Post(Runnable)4、View.PostDelayed(Runnabe,long)5、AsyncTask方法一:handlerhandler是android中专门用来在线程之间传递信息类的工具。要讲明han...原创 2020-04-13 19:51:33 · 331 阅读 · 0 评论 -
Android中UI线程与后台线程交互设计的5种方法
我想关于这个话题已经有很多前辈讨论过了。今天算是一次学习总结吧。在android的设计思想中,为了确保用户顺滑的操作体验。一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务。因此我们必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访问和控制UI控件。例如访问网络获取数据,然后需要将这些数据处理显示出来。就出现了上面所说的情况。原本这是在正常不过的现...原创 2020-04-13 19:41:40 · 167 阅读 · 0 评论 -
Android项目目录结构res和assests目录的不同
Android项目目录结构res和assests目录的不同:是否在R.java文件中被注册;(res的注册,assests不注册)res所放的文件类型是规定好的;而assests目录下放置的文件类型不限制;访问方法不同。res中文件使用R.内部静态类.id来访问;而assest中的文件通过IO流来访问。...原创 2020-04-13 16:54:13 · 118 阅读 · 0 评论 -
android res目录
我们建好一个Android 的项目后,默认的res下面 有drawable、layout、values等目录1.drawable目录相关启开一个新的Android专案后在res资料夹内会有drawable-hdpidrawable-mdpidrawable-ldpidrawable-xhdpidrawable-xxhdpi三个目录,所定义的dpi皆不同一般來說,ldpi是120,...原创 2020-04-13 16:39:23 · 401 阅读 · 0 评论 -
Android中Bundle
Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable或Parcelable接口。Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本...原创 2020-04-13 11:20:28 · 91 阅读 · 0 评论 -
简单快速处理网络请求超时的方法
最近在调试联网操作的时候碰到网络请求超时的问题,以下是简单快速处理网络超时的方法:使用android提供的工具类AsyncTask类,此类提供了一个AsyncTask.execute().get(timeout, unit);方法用于处理用户的请求超时的操作,可以设置请求超时的时间(timeout)以及请求时间的单位(unit)。例如:设置超时时间为2秒,单位为毫秒try {AsyncTa...原创 2020-04-13 09:35:12 · 4010 阅读 · 0 评论 -
检查接口是否用于主线程
如果接口需要执行网络交互或者其他耗时操作,则需要检查调用者是否将接口使用在主线程,该方法可以进行检测。private void ensureNotOnMainThread() {Looper var1 = Looper.myLooper();if (var1 == Looper.getMainLooper()) {IllegalStateException var2 = new Illeg...原创 2020-04-13 09:33:43 · 106 阅读 · 0 评论 -
Android退出应用程序方法总结
finish方法finish();该方法只是结束当前Activity,系统将最上面的Activity移出了栈,并没有清理占用的资源。如果栈内有很多Activity 的话,使用该方法显得有点捉襟见肘了,没办法一次移出全部Activity,并且没有立即释放内存,活动的资源也没有被清理。进程式(1)KillProcess():可以杀死当前应用活动的进程,这一操作将会把所有该进程内的资源...原创 2020-04-13 09:32:29 · 3199 阅读 · 0 评论 -
强杀进程
调用系统apiActivityManager.forceStopPackage(String packageName) ;强行杀掉进程方法,会导致被杀死的进程不走onDestory()等生命周期需要在onDestory()等生命周期中处理业务的功能模块需要注意此现象...原创 2020-04-11 15:47:12 · 134 阅读 · 0 评论 -
android原生编译命令
在android源码根目录下,执行以下三步即可编译android:. build/envsetup.sh #这个脚本用来设置android的编译环境;lunch #选择编译目标make #编译android整个系统android平台提供了几个命令用于编译,分别为:make: 不带任何参数则是编译整个系统,编译时间比较长,初次编译使用此命令。make MediaProvider:...转载 2020-03-03 08:51:54 · 977 阅读 · 0 评论 -
Android获取当前系统日期和时间的三种方法
第一种方法SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// HH:mm:ss//获取当前时间Date date = new Date(System.currentTimeMillis());time1.setText("Date获取当前日期时间"+simpleDateFor...原创 2020-02-28 17:04:12 · 1411 阅读 · 0 评论 -
Android 判断系统时间是否在某个时间段之间(如8:00 ~ 12:00)
/** * 判断当前系统时间是否在指定时间的范围内 * * beginHour 开始小时,例如22 * beginMin 开始小时的分钟数,例如30 * endHour 结束小时,例如 8 * endMin 结束小时的分钟数,例如0 * true表示在范围内, 否则false */public static boolean isCurrentInTimeScope(i...原创 2020-02-28 17:01:57 · 1279 阅读 · 0 评论 -
Android延时(postDelayed和schedule)
今天我们初识Android延时,分别使用Handler的postDelayed和Timer的schedule实现延时操作。首先我们使用Handler的postDelayed实现延时操作。 new Handler().postDelayed(new Runnable() { @Override public void run() { ...原创 2020-02-13 18:15:58 · 632 阅读 · 0 评论 -
application类
Application类Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。通常我们是不需要...原创 2020-01-27 16:24:29 · 268 阅读 · 0 评论 -
8.0系统的应用图标适配
8.0系统的应用图标适配为什么要进行应用图标适配?可能有些朋友觉得困惑,应用图标这种东西从Android远古时代就已经有了,而且功能格外的简单,就是放张图片而已,这有什么好适配的呢?但实际上,在当前Android环境下,应用图标功能是极其混乱的。如果说要讲一讲手机应用图标的历史,其实要从苹果开始讲起。在上世纪80年代,苹果还在设计Lisa和Macintosh电脑的时候,乔布斯就是个圆角矩形的...原创 2020-01-16 15:01:34 · 167 阅读 · 0 评论 -
Android layout属性大全
第一类:属性值 true或者 falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 androi...原创 2020-01-09 09:34:55 · 71 阅读 · 0 评论 -
Android 中 getString() 方法的小知识点
Android 中 getString() 方法的小知识点原创夏洛克的猫 发布于2017-10-21 21:07:21 阅读数 2936 收藏展开最近经常看到为了获取类似如下的字符串hello %s1采用下面的代码String formatStr = String.format(getString(R.string.test), “Android”);1其实 Android 中...原创 2020-01-07 16:52:31 · 1087 阅读 · 0 评论 -
ListView实现加载不同Item布局
ListView实现加载不同Item布局?大家好,今天总结一片ListView加载不同Item布局的博客,在Android的app开发当中ListView貌似是基本配置,一般我们的ListView主要是作为列表类型的数据展示,普通的展示数据很好做,无非就是利用Volley、Xutils等等框架请求,然后Gosn或其他的解析,ImageLoader加载并显示图片,其实今天也用这些但是要做一些处理,...原创 2020-01-07 16:39:31 · 229 阅读 · 0 评论 -
Android列表视图数据加载
效果图:实现思路:1.创建ListView布局,以及展示数据的视图2.准备数据3.创建自定义适配器(将准备好的数据绑定到要展示的视图文件中)4.为ListView组件设置创建好的适配器1.视图模块ListView布局:<?xml version="1.0" encoding="utf-8"?><android.support.constraint.Constra...原创 2020-01-06 18:57:28 · 135 阅读 · 0 评论 -
context.getContentResolver().query()详细用法详解
1.获取联系人姓名一个简单的例子,这个函数获取设备上所有的联系人ID和联系人NAME。[java] view plain copypublic void fetchAllContacts() {ContentResolver contentResolver = this.getContentResolver();Cursor cursor = contentResolver.query(...原创 2020-01-04 17:48:36 · 5921 阅读 · 0 评论 -
android系统广播
android.app.action.ACTION_PASSWORD_CHANGEDandroid.app.action.ACTION_PASSWORD_EXPIRINGandroid.app.action.ACTION_PASSWORD_FAILEDandroid.app.action.ACTION_PASSWORD_SUCCEEDEDandroid.app.action.DEVICE_...原创 2020-01-04 15:30:40 · 224 阅读 · 0 评论 -
Service 和 IntentService的区别
Srevice不是在子线程,在Srevice中做耗时操作一样ANR,然后我们就会用到IntentService,IntentSrevice不但擅长做耗时操作,还有一个特点,用完即走;在Srevice中做耗时轮询操作,使用Handler:public class MyService extends Service {public MyService() {}@Overridepubli...原创 2020-01-04 15:10:46 · 82 阅读 · 0 评论 -
浅谈android Service和BroadCastReceiver
浅谈android Service和BroadCastReceiver1.题记Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Con...原创 2020-01-04 15:07:04 · 540 阅读 · 0 评论 -
多线程通信环境的选择
通过上述文档叙述可以看到,当需要在不同APP之间访问同一个服务且处理多线程的时候需要用到AIDL,如果不是多个APP之间的IPC只需使用Binder机制,如果需要处理不同APP之间但是只是单线程的话只需使用Messager机制,即下面将介绍的一类情况。所以可以知道AIDL最佳使用情况是在不同APP之间访问同一个服务且处理多线程,因此可以知道AIDL可以用来处理不同APP之间的通信。...原创 2020-01-03 19:19:44 · 87 阅读 · 0 评论 -
AIDL的使用方式
前言最近有很多朋友问我这个AIDL怎么用,也许由于是工作性质的原因,很多人都没有使用过aidl,所以和他们讲解完以后,感觉对方也是半懂不懂的,所以今天我就从浅到深的分析一下这个aidl具体是怎么用的,希望对大家有帮助。作为一名合格Android开发人员,如果没听过Service,那就有点说不过去了啊,Service是Android四大组件之一,它是不依赖于用户界面的,就是因为Service不依...原创 2020-01-03 17:35:09 · 161 阅读 · 0 评论 -
手把手教你Android AsyncTask
前言多线程的应用在Android开发中是非常常见的,常用方法主要有:继承Thread类实现Runnable接口HandlerAsyncTaskHandlerThread今天,我将献上一份AsyncTask使用教程,希望大家会喜欢目录示意图定义一个Android 已封装好的轻量级异步类属于抽象类,即使用时需 实现子类public abstract class Async...原创 2020-01-03 15:24:05 · 81 阅读 · 0 评论 -
ContentProvider如何实现APP之间的数据共享
ContentProvider 认识:Content providers负责管理结构化数据的访问,Content providers封装数据并且提供一套定义数据安全的机制。Content providers是一套在不同进程间进行数据访问的接口。 Content providers为数据跨进程访问提供了一套安全的访问机制,对数据组织和安全访问提供了可靠的保证。Content Provide...原创 2020-01-03 11:43:21 · 1873 阅读 · 0 评论 -
Android跨进程通信篇
前言 转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/10256379.html】,谢谢! 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一。Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Android开发高级工程师必须要跨过的一道坎。但是,我们是否...原创 2020-01-02 21:06:34 · 584 阅读 · 0 评论 -
ContentProvider
ContentProvider介绍:ContentProvider是Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。其实是比较低调的一个,日常开发中使用的频率也没那三位多。它的诞生就是为了给不同应用提供内容访问,自然在我们研...原创 2020-01-02 19:21:38 · 94 阅读 · 0 评论 -
android把一个String中一段文字设置成超链接
final String linkWord1 = “Android”;final String linkWord2 = “Are you ok?”;final String linkWord3 = “think you!”;String word = “Hello " + linkWord1 + “,” + linkWord2 + " I’m fine,” + linkWord3;Span...原创 2019-12-30 13:41:40 · 928 阅读 · 1 评论 -
Android各种访问权限Permission详解
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入在Andro...原创 2019-12-25 13:58:00 · 1538 阅读 · 0 评论