Android应用层
文章平均质量分 85
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
进阶三部曲第一部《Android进阶之光》第2版已出版
本文首发于微信公众号「刘望舒」其实《Android进阶之光》第二版已经在2021年10月就出版了,但是今天才发现,我去,没在掘金发文,今天补上~~ 以下是正文其实不打算出《Android进阶之光》第二版的,起初觉得意义不大,但是看到现在仍旧有很多人看《Android进阶之光》第一版,而里面的内容又有点过时了。还有一个原因是Android进阶三部曲摆在书架上,《Android进阶之光》就显得特别的突兀,也有很多读者也跟我一样的感觉,说强迫症犯了,一看摆在书架上的书高低不同就很难受。因此《Android.原创 2022-02-15 11:31:08 · 5727 阅读 · 5 评论 -
Android Jetpack架构组件(六)一文带你了解ViewModel的使用和原理
本文首发于微信公众号「后厂技术官」前言在本系列的第4和第5篇文章中,介绍了LiveData的使用和原理,LiveData和ViewModel是一对好搭档,这篇文章我们一起来学习什么是ViewModel、ViewModel基本使用、ViewModel的原理。1.什么是ViewModel在说ViewModel前,我们需要解一下MVVM和DataBinding,在Android进阶三部曲第...原创 2020-01-12 18:24:10 · 2385 阅读 · 3 评论 -
Android Jetpack架构组件(五)带你了解LiveData(原理篇)
本文首发于微信公众号「后厂技术官」前言在上一篇文章中我们学习了LiveData的基本用法,我们知道LiveData是一个可观察的数据持有者,他是具有组件生命周期感知的,那么它是如何观察组件生命周期变化的呢?LiveData和RxJava的不同的是,LiveData并不是通知所有观察者,它只会通知处于Active状态的观察者,如果一个观察者处于DESTROYED状态,它将不会收到通知,这...原创 2020-01-12 17:51:35 · 1101 阅读 · 0 评论 -
Android Jetpack架构组件(四)一文带你了解LiveData(使用篇)
本文首发于微信公众号「后厂村码农」前言在2017年前后,RxJava一直很火,我在Android进阶三部曲第一部《Android进阶之光》中就介绍了RxJava的使用和原理。谷歌推出的LiveData和RxJava类似,也是基于观察者,你可以认为LiveData是轻量级的RxJava。起初LiveData并不被看好,随着谷歌的大力推广,LiveData也慢慢的进入了大家的视野。一般来说,...原创 2019-11-20 08:01:11 · 1588 阅读 · 1 评论 -
Android Jetpack架构组件(三)一文带你了解Lifecycle(原理篇)
本文首发于微信公众号「后厂村码农」前言在上一篇文章中,我们学习了如何去使用Lifecycle,当然之会使用是不够的,还需要了解它的原理,这是成为优秀工程师必备的。这篇文章就来学习Lifecycle的基本原理。1.Lifecycle的生命周期状态事件和状态Lifecycle使用两个枚举来跟踪其关联组件的生命周期状态,这两个枚举分别是Event和State。State指的是Lifecy...原创 2019-11-20 07:59:52 · 2134 阅读 · 1 评论 -
Android Gradle (二)签名配置和依赖管理
本文首发于微信公众号「后厂村码农」相关文章Gradle核心思想(一)为什么现在要用Gradle?Gradle核心思想(二)Gradle入门前奏Gradle核心思想(三)Groovy快速入门指南Gradle核心思想(四)看似无用,实则重要的Gradle WrapperGradle核心思想(五)通俗易懂的Gradle插件讲解Gradle核心思想(六)自定义Gradle插件的三种方式...原创 2019-10-29 07:40:07 · 1433 阅读 · 0 评论 -
Android Jetpack架构组件(二)一文带你了解Lifecycle(使用篇)
本文首发于微信公众号「后厂村码农」前言在上一篇文章中,我们基本了解了什么是Android Jetpack,这一篇文章来介绍Android Jetpack架构组件的Lifecycle,Lifecycle用于帮助开发者管理Activity和Fragment 的生命周期,由于Lifecycle是LiveData和ViewModel的基础,所以需要先学习它。1.为什么需要Lifecycle在...原创 2019-10-29 06:39:50 · 2094 阅读 · 0 评论 -
Android Jetpack架构组件(一)带你了解Android Jetpack
本文首发于微信公众号「后厂村码农」前言Android已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的...原创 2019-10-24 00:27:58 · 6728 阅读 · 0 评论 -
android面试题总结
<br />2.横竖屏切换时候activity的生命周期<br />1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次. <br /><br />2.设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次. <br /><br />3.设置Activity的android:configChanges="orient原创 2011-05-20 23:37:00 · 5834 阅读 · 7 评论 -
android Draw Rect 坐标图示以及DrawOval的椭圆坐标说明
<br />Java代码 <br />1. //绘制矩形 <br />2. canvas.drawRect(new Rect(150, 75, 260, 120), mPaint); <br />3. //设置裁剪区域 <br />4. canvas.clipRect(10, 10, 280, 260); <br /><br />我对它们的参数有些疑问 我不知道 android 它是怎么在一个 Canvas对象上 绘制出一个矩形?newRect(150,75,260,12转载 2011-05-21 21:30:00 · 6013 阅读 · 2 评论 -
Android Application Task Activities的关系
<br />什么是Android Application?<br /><br />简单来说,一个apk文件就是一个Application。<br /><br />任何一个Android Application基本上是由一些Activities组成,当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系,或者各自独立处理不同的响应。<br /><br />这些Activities捆绑在一起成为了一个处理特定需求的Application, 并且以“.apk”作为后缀名存在于文件系统中。<b转载 2011-05-26 21:15:00 · 1561 阅读 · 0 评论 -
Android四种Activity的加载模式
一个Activty的生命周期<br />Activty的生命周期的也就是它所在进程的生命周期。<br /> <br />每一个活动( Activity )都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。 <br />但是当一个活动的状态发生改变的时候,开发者可以通过调用 onXX() 的方法获取到相关的通知信息。 <br /> <br />在实现 Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候来调用。 o转载 2011-05-26 21:24:00 · 1734 阅读 · 0 评论 -
Android中的Handler, Looper, MessageQueue和Thread
<br />前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。<br /><br />对于这部分的内容,将分成4小节来描述:<br /><br />1.职责与关系<br /><br />2.消息循环<br /><br />3.线程与更新<br /><br />4.几点小结<br /><br />----------------------------转载 2011-05-25 19:03:00 · 1853 阅读 · 0 评论 -
Android Service学习之AIDL, Parcelable和远程服务
AIDL的作用<br /> 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象。在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。<br /> 通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作。<br /> AIDL (Android Interface Definitio转载 2011-05-27 22:26:00 · 1759 阅读 · 0 评论 -
Android 的消息队列模型
<br />Android是参考Windows的消息循环机制来实现Android自身的消息循环的。 <br />Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环)。 <br />Android系统中,Looper负责管理线程的消息队列和消息循环。我们可以通过Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Loo转载 2011-05-29 20:16:00 · 1864 阅读 · 1 评论 -
android:gravity与android:layout_gravity的区别
<br />LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。<br />举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:la转载 2011-05-29 20:49:00 · 1672 阅读 · 0 评论 -
Android Service学习之IntentService 深入分析
<br />什么是IntentService? (本文转自http://blog.csdn.net/gaojie314/archive/2010/11/28/6040701.aspx)<br />官方的解释是:<br />IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests throug转载 2011-05-31 21:51:00 · 1661 阅读 · 0 评论 -
Android执行文件apk的组成结构
<br />APK是Android PacKage的缩写,即Android安装包。将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件其实是zip格式,但后缀名被修改为apk,在windows上可以通过winrar等程序直接解压查看。<br /> <br />解压apk后,一般的可看到的目录结构如下:<br /> <br />文件或目录<br />作用<br />META-INF/<br />也就是一个manifest,从java jar文件引入的描述包信息的目录<b转载 2011-06-01 21:25:00 · 11051 阅读 · 0 评论 -
史上最全的Android的Tab与TabHost讲解
<br />转自http://www.eoeandroid.com/thread-1035-1-1.html<br /> <br />Tab与TabHost<br /><br /><br />这就是Tab,而盛放Tab的容器就是TabHost<br />如何实现??<br />每一个Tab还对应了一个布局,这个就有点好玩了。一个Activity,对应了多个功能布局。<br />①新建一个Tab项目,注意,不要生成main Activity<br /><br />这里不要选<br />转载 2011-05-31 22:10:00 · 2339 阅读 · 0 评论 -
android中 关于listitem 获得焦点时,改变其背景
<br />其实这个问题一直困扰着我,后来终于解决了。其实很简单看下面的截图,不好意思,截图有点模糊:<br /><br />1、listView控件 <br /> <ListView <br /> android:id="@+id/contact_listview" <br />android:layout_width="wrap_content" <br />android:layout_height="400dip" <br /> android:divider转载 2011-06-01 12:17:00 · 2217 阅读 · 0 评论 -
Android 适配不同分辨率&hdpi、mdpi、ldpi&横屏竖屏
一:不同的layoutAndroid手机屏幕大小不一,有480×320, 640×360, 800×480.怎样才能让App自动适应不同的屏幕呢?其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640×360,layout-800×480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用转载 2011-06-07 18:55:00 · 2190 阅读 · 0 评论 -
Android 数字签名
在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解an转载 2011-06-23 17:20:00 · 2153 阅读 · 0 评论 -
android消息地址
消息机制虽然常用到,但这次写的程序接触到了Looper,觉得这篇文章不错就转载了下来,工作不忙但也不轻松,何时写个原创呢? Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE转载 2011-06-18 10:00:00 · 1392 阅读 · 0 评论 -
Android的monkey基本用法
Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测 试。Monkey包括许多选项,它们大致分为四大类:· 基本配置选项,如设置尝试的事件数量。· 运行约束选项,如设置只对单独的一个包进行原创 2011-08-09 00:20:43 · 1970 阅读 · 0 评论 -
android的5个进程等级
Foreground Process当发生以下情况时处于前台进程:正处于activity Resume()状态正处于与服务交互的状态正处于服务在前台运行的状态,也就是startForeground()被调用Service 生命周期函数正在被执行Broa原创 2011-08-10 01:13:04 · 3210 阅读 · 1 评论 -
TraceView使用方法
一、TraceView简介 TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。 TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。原创 2011-10-09 22:40:17 · 11042 阅读 · 0 评论 -
Android ANR错误排查
Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 。 下面我们就来说说如何处理log文件 。什么时候会有Log文件的产生 ?Log的产生大家都知道 , 大家也都知道通过DDMS来看log , 但什么时候会产生log文件呢 ?一般在如下几种情况会产生log文件 。 1,程序异常退出 , uncaused转载 2011-06-01 22:10:00 · 11062 阅读 · 1 评论 -
GPS开发常用方法和Criteria确定android location providerGPS
GPS常用方法总结 取得LocationProvider Java代码 public void getLocationProvider() { try { Criteria mCriteria01 = new Criteria(); mCriteria01.setAccur原创 2011-10-30 16:30:20 · 2908 阅读 · 0 评论 -
GZIP压缩解压类
当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;impo原创 2011-07-11 16:28:35 · 4410 阅读 · 0 评论 -
android用听筒不断播放音乐
这个小应用常用于测试手机的听筒寿命。MainActivity:package morgen.headphone;import java.io.File;import android.app.Activity;import android.content.Context;import android.media.AudioManager;import android.media原创 2011-10-13 21:20:15 · 8805 阅读 · 2 评论 -
Android-Adapter应用总结
首先来看一下Adapter的体系结构: 一个Adapter的对象扮演一个桥梁的角色。这个桥梁连接着一个AdapterView和它所包含的数据。Adapter提供了一个通到数据项的途径。Adapter还负责为在数据集里的每个数据生项生成一个View。它有一个重要的方法:public abstract View getView (int position,View convertView转载 2011-06-02 17:32:00 · 2024 阅读 · 0 评论 -
android matrix
目标:本文将讲述如何如何在Android中使用Matrix实现图片的缩放和旋转,通过本文学习,你将学会如何通过Matrix操作图像。代码示例:直接上代码了,我在代码中附带了详细的解释,代码如下: package com.eoeandroid.demo.testcode; import android.app.Activity; impo转载 2011-06-05 12:36:00 · 1729 阅读 · 0 评论 -
浅谈ANR及log分析ANR
一:什么是ANRANR:Application Not Responding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10 seconds)BroadcastReceiver在原创 2011-10-30 14:54:03 · 60125 阅读 · 14 评论 -
Intent和PendingIntent的区别
intent是意图的意思,pending表示即将发生或来临的事情。PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。Intent 是及时启动,intent 随所在的activity 消失而消失。PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast原创 2011-10-10 22:28:57 · 1964 阅读 · 1 评论 -
adb shell 命令
adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序。借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作: 1、快速更新设备或手机模拟器中的代码,如应用或Android 系统升级;原创 2011-09-15 23:24:02 · 3264 阅读 · 2 评论 -
对于Android的http请求的容错管理
在android项目中,如果有用到http请求,就必须也应该加上http请求的超时管理,异常管理,项目中遇到这个需求,google上搜索到了一大堆,但是写的都比较简单,做个demo还行,用在项目中还是不够完善。自己写了一个例子,有不完善之处,欢迎大家指正。 需要注意的地方:有三个方面 如何控制超时机制 如何处理异常 如何处理请求错误的private class XmlA转载 2011-06-22 21:49:00 · 3058 阅读 · 0 评论 -
自定义LoadingDialog
看惯了系统自带的Dialog的同学们可以试着尝试自己做一个LoadingDialog。效果图:代码如下:CustomerLoading.javapackage com.eric;import android.app.Activity;import android.os.Bundle;import android.widget.LinearLayout;import原创 2011-09-13 11:02:24 · 5301 阅读 · 0 评论 -
自定义气球Overlay的开发
android的api中没有直接提供气球和信息窗口的控件的实现,所以时常要开发带信息窗口的气球实现类,这时需要自定义一个气球overlay来继com.google.android.maps.Overlay类,overlay就是可以自定义绘制的覆盖在地图上面的一个层。下面是代码:package morgen.mstx;import java.util.ArrayList;impor原创 2011-09-07 16:06:04 · 3082 阅读 · 2 评论 -
AsyncTask的用法
在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI工具包 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用转载 2011-06-03 21:07:00 · 1529 阅读 · 0 评论 -
Android JNI知识简介
Android JNI知识简介Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。1.从如何载入.so谈起由于Android的应用层的类都转载 2011-05-22 20:48:00 · 2018 阅读 · 0 评论