![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android技术
文章平均质量分 66
AFinalStone
这个作者很懒,什么都没留下…
展开
-
使用MAT排查Android内存泄漏
前言:MAT是Eclipse出品的一个插件,当然也有独立的版本。下载地址:点我在这里先提醒一下:1、本篇文章假定你已经可以拿到hprof文件,如果不懂这个文件,请自行查询2、MAT并不会准确地告诉我们哪里发生了内存泄漏,而是会提供一大堆的数据和线索,我们需要根据自己的实际代码和业务逻辑去分析这些数据,判断到底是不是真的发生了内存泄漏。hprof文件格式转换MAT仅支持对标准格式的hprof文件进行内存分析,所以,我们首先要使用AndroidSDK的platform-tools目录下提供的hp原创 2020-06-15 20:55:36 · 613 阅读 · 0 评论 -
Android Q 的到来,IMEI无法获取,如何获取新的稳定 ID
前言随 Android Q 的到来,IMEI 无法获取,获取稳定的 ID 成为越来越多的开发者迫切需求。为了解决这个问题,这里提供两种参考方案:方案一:使用手机厂联盟提供了一个全新的广告跟踪标示OAIDOAID:Open Anonymous Device Identifier 开放匿名设备标识符方案二:使用数字联盟则提供的"可信ID"的免费版CNAdlD标识特性OAID(匿名设...原创 2020-04-15 12:02:55 · 2920 阅读 · 0 评论 -
使用surfaceView实现简单动画效果
一、概念View在UI线程去更新自己;SurfaceView则在一个子线程中去更新自己SurfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面在UI的主线程中更新动画,时间一旦太长就会出现问题SurfaceView在新的线程中更新画面所以不会阻塞你的UI主线程,但是涉及到线程同步,需要SurfaceView中 thread处理.触摸产生的动画...原创 2019-12-23 11:38:41 · 531 阅读 · 0 评论 -
加密算法总结(二)常用加密算法的加密流程
一、RSA加密流程A前端、B后端A->BA提取消息m的消息摘要h(m),并使用自己的私钥对摘要h(m)进行加密,生成签名sA将签名s和消息m一起,使用B的公钥进行加密,生成密文c,发送给BBB接收到密文c,使用自己的私钥解密c得到明文m和数字签名sB使用A的公钥解密数字签名s解密得到H(m)B使用相同的方法提取消息m的消息摘要h(m)B比较两个消息摘要。相同则...原创 2019-12-23 11:32:07 · 351 阅读 · 0 评论 -
自己实现Android开发之全局异常捕获
Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序。...原创 2019-12-22 13:43:27 · 217 阅读 · 0 评论 -
Handler杂谈【二】Handler的用法及解析
原文地址:https://www.jianshu.com/p/7cdf2c2ed354在Handler机制中,每一个线程有一个Looper,Looper.loop()一直无限循环,为什么没有造成ANR呢?首先要知道造成ANR的基本原因是:1.在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)2.BroadcastReceiver在10秒内没有执行完毕造成以上两点的原因有很多,比如在主...原创 2019-12-22 11:42:40 · 675 阅读 · 0 评论 -
使用APT实现APP动态配置应用初始BaseUrl的功能
https://blog.csdn.net/qq_16666847/article/details/98847278原创 2019-12-20 11:38:04 · 399 阅读 · 0 评论 -
教你如何使用协程(七)协程挂起
原文地址:https://www.bennyhuo.com/2019/05/07/coroutine-suspend/#more原创 2019-11-28 11:31:31 · 791 阅读 · 0 评论 -
教你如何使用协程(七)协程的取消
原文地址:https://www.bennyhuo.com/2019/04/30/coroutine-cancellation/原创 2019-11-28 11:30:11 · 528 阅读 · 0 评论 -
教你如何使用协程(六)协程的异常处理
原文地址:https://www.bennyhuo.com/2019/04/23/coroutine-exceptions/异步代码的异常处理通常都比较让人头疼,而协程则再一次展现了它的威力。引子我们在前面一篇文章当中提到了这样一个例子:typealias Callback = (User) -> Unitfun getUser(callback: Callback){ ...原创 2019-11-28 11:26:18 · 1601 阅读 · 0 评论 -
教你如何使用协程(四)协程+Kotlin+ Retrofit实现网络请求
原文地址:https://www.bennyhuo.com/2019/04/01/basic-coroutines/#more>接触新概念,最好的办法就是先整体看个大概,再回过头来细细品味### 需求确认在开始讲解本文之前,我们需要先确认几件事儿:1. 你用过线程对吧?2. 你写过回调对吧?3. 你用过 RxJava 类似的框架吗?原创 2019-11-21 20:38:28 · 2954 阅读 · 2 评论 -
教你如何使用协程(二)初步启动Kotlin协程
### 协程是什么?首先kotlin协程是kotlin的扩展库(kotlinx.coroutines)。上一篇我们简单了解了线程的概念,线程在Android开发中一般用来做一些复杂耗时的操作,避免耗时操作阻塞主线程而出现ANR的情况,例如IO操作就需要在新的线程中去完成。但是呢,如果一个页面中使用的线程太多,线程间的切换是很消耗内存资源的,我们都知道线程是由系统去控制调度的,所以线程使用起来比较难于控制。这个时候kotlin的协程就体现出它的优势了,kotlin协程是运行在线程之上的,它的切原创 2019-11-08 14:31:44 · 1020 阅读 · 0 评论 -
教你如何使用协程(一)用漫画告诉你什么是协程?
https://www.bennyhuo.com/2019/04/01/basic-coroutines/http://www.cocoachina.com/articles/28834原创 2019-11-07 20:04:50 · 652 阅读 · 0 评论 -
Android9.0开发适配常见问题
视图焦点0 面积的视图(即宽度或高度为 0)无法再被聚焦。此外,Activity 不会再在轻触模式下隐式分配初始焦点,而是需要由您根据需要显式请求初始焦点。HTTP请求被禁止Android9.0之后,默认禁止不安全的HTTP请求,(在我们设置target=28后,在多款系统为9.0的手机上出现了大面积的图片显示不出来的问题,后来发现,不能正常显示的图片的url都是http的,能正常显...原创 2019-10-22 11:49:43 · 2034 阅读 · 0 评论 -
Android的WebView如何播放视频
第一步:修改AndroidMainfest.xml中的属性1.在application或者要播放视频的webView所在的Activity里添加:android:hardwareAccelerated="true"(开启硬件加速的意思)2.注意 android:targetSdkVersion="17" /> 中的android:targetSdkV原创 2015-12-19 21:32:24 · 2495 阅读 · 0 评论 -
ImageView的ScaleType属性
今天在做3C电商软件的时候遇到了图片显示问题,于是再网上搜了一下,把ImageView的Scaletype的所有属性统一搜集了一下。方便以后使用和回顾。也谢谢原创博主的辛苦!ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。设置的方式包括:1. 在layout xml中定义android:scaleTyp转载 2016-01-21 15:07:14 · 989 阅读 · 0 评论 -
android布局属性详解
RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 an转载 2015-12-20 22:26:06 · 798 阅读 · 0 评论 -
android代码中动态添加控件
package cn.shitou.demo.scroollistview;import java.util.ArrayList;import java.util.List;今晚花时间研究,简单实现了一下在Android代码中动态添加控件的功能 MainActivity代码:public class MainActivity extends Activity { pri原创 2016-01-05 21:07:30 · 2660 阅读 · 0 评论 -
HorizontalScrollView嵌套GridView实现横向滑动
在自定义View和ViewGroup的时候,我们经常会遇到int型的MeasureSpec来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式。这个大小的模式,有点难以理解。在系统中组件的大小模式有三种:1.精确模式(MeasureSpec.EXACTLY)在这种模式下,尺寸的值是多少,那么这个组件的长或宽就是多少。2.最大模式(Measure转载 2016-01-06 10:47:11 · 2535 阅读 · 0 评论 -
在EditText中添加图片和文字
如下图,在EditText中显示图片其原理就是在相对布局(RelativeLayout)的基础上用ImageView实现代码如下:01. 02. <EditText android:id="@+id/edt_operator_name" style="@style/syncEditText" 03.转载 2016-01-06 13:31:56 · 14798 阅读 · 0 评论 -
android:windowSoftInputMode属性
activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。这个属性能影响两件事情:【一】当有焦点产生时,软键盘是隐藏还是显示【二】是否减少活动主窗口大小以便腾出空间放软键盘它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任一组设置多个值——多个”state…”v转载 2016-01-24 23:51:05 · 592 阅读 · 0 评论 -
ShareSDK实现第三方微信分享功能
目标:集成ShareSDK,然后实现自己的软件可以分享信息到微信等第三方交互平台上面去。本文以集成ShareSDK和实现微信分享为例,具体说一下实现软件第三方分享的流程。1. 获取注册ShareSDK的账号,下载Android版ShareSDK并获取ShareSDK的AppKey(AppKey后面要用)具体流程参看下面链接:http://bbs.mob.com/forum.ph原创 2016-01-26 17:53:07 · 4609 阅读 · 0 评论 -
Service里面的onStartCommand()方法详解
启动service的时候,onCreate方法只有第一次会调用,onStartCommand和onStart每次都被调用。onStartCommand会告诉系统如何重启服务,如判断是否异常终止后重新启动,在何种情况下异常终止onStartCommand和onStart区别转载 2016-02-15 10:54:30 · 2317 阅读 · 0 评论 -
Android webview使用详解
1. 打开网页时不调用系统浏览器, 而是在本WebView中显示:mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(ur转载 2016-02-02 19:57:15 · 574 阅读 · 0 评论 -
Ksoap2和HttpTransportSE的一点使用
最近做一个项目,用的Ksoap2进行的WebService调用,开始的时候没有发现什么问题,后来测试的时候发现,当在测试环境没有外网ip的时候进行登录的时候总是提示正在登录,很长时间没有反应。因为当时手机用的是3G网络,根本访问不到测试的地址,这时问题就这样出现了,查看Ksoap的API根本没有设置网络超时的相关方法,只能求助网络进行解答,可是费劲了各种力量还是没有找到可行的解决方案,最后在仔细观转载 2016-02-02 20:04:58 · 4883 阅读 · 2 评论 -
GridView的属性
1.android:numColumns=”auto_fit” //GridView的列数设置为自动2.android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度3.android:stretchMode=”columnWidth"//缩放与列宽大小同步4.android:verticalSpacing=”10dp”转载 2016-03-03 17:15:35 · 636 阅读 · 0 评论 -
RadioButton 状态选择器
首先是Demo效果图:初始化没有任何按钮被选中:1:默认按钮被选中2.1:价格按钮被选中2.2:价格按钮被按下3:最新按钮被选中4.1 筛选按钮被选中4.2:筛选按钮被按下好了,效果图完毕,废话不都说,直接上代码。MainActivity代码:/** * RadioButton状态选择器简单demo * @原创 2016-03-17 11:39:51 · 6152 阅读 · 0 评论 -
Android系统下载管理DownloadManager功能介绍及使用示例
可运行代码地址可见DownloadManager Demo,效果图如下:关于下载管理的废话XHTMLAndroid网络应用开发中经常需要下载文件,如音乐、应用、系统升级包。一般的要求是统一的管理(暂停、继续、取消)中心、断点续传、并发下载、wifi及3g的不同处理、下载完成后处理、管理中心与应用的交互。可以使用Rand转载 2016-02-19 10:28:25 · 2381 阅读 · 0 评论 -
PopUpWindow使用详解(一)——基本使用
今天在做软件的时候用到了PopUpWindow,于是在网上搜集了一下关于PopUpWindows相关的知识记录一下。首先是效果:这个效果很容易理解:当点击btn时,在底部弹出PopupWindow,然后点击各个item弹出对应toast。1、PopupWindow与AlertDialog的区别最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最转载 2016-03-12 20:55:21 · 964 阅读 · 0 评论 -
下载软件更新包更新软件
今天花了不少功夫,终于把软件自动更新功能实现了,还是做一下笔记吧!第一步: 获取服务器当前最新版本号信息,与当前应用版本号进行对比。这个过程我不多讲,我从第二步开始说。也就是确认当前版本低于服务器最新版本号,然后根据服务器给出的最新版本的下载地址,去下载最新版的App并跳转到默认安装界面。第二步: 开启一个服务: updateAppInt原创 2016-02-17 19:54:06 · 592 阅读 · 0 评论 -
android shape的使用
<corners android:radius="9dp" android:topLeftRadius="2dp" android:topRightRadius="2dp" android:bottomLeftRadius="2dp" android:bottomRightRadius="2dp"/>转载 2016-04-01 17:38:00 · 516 阅读 · 0 评论 -
PopUpWindow使用详解(二)——进阶及答疑
关于PopUpWindow是转载的,为了方便自己以后再次使用时,不用那么麻烦的去搜索,记录一下,谢谢原创作者http://my.csdn.net/harvic880925上篇为大家基本讲述了有关PopupWindow的基本使用,但还有几个相关函数还没有讲述,我们这篇将着重看看这几个函数的用法并结合源码来讲讲具体原因,最后是有关PopupWindow在使用时的疑问,给大家讲解一下。转载 2016-03-15 15:39:34 · 806 阅读 · 0 评论 -
Activity中动态设置TextView的颜色
android中设置TextView的颜色有方法setTextColor,这个方法被重载了,可以传入两种参数 Java代码:[java] view plain copy public void setTextColor(int color) { mTextColor = ColorStateList.v转载 2016-04-25 17:25:51 · 841 阅读 · 0 评论 -
ListView实现倒计时功能
这几天做软件有用到这个效果,在网上找了好几个Demo,下载下来后发现都有一些小瑕玆,自己花了半天时间,想了好几种方法,最后发现这种方法实现起来的效果是最简单和最好的,倒计时功能可以实现,而且ListView可以复用,并且不会出现Item复用,内容错位的情况。先上效果图:依然废话不多说,直接上代码:1:主页MainActivity函数:public class MainAct原创 2016-03-16 19:24:09 · 5799 阅读 · 2 评论 -
Intent 传递对象和集合
两个Activity跳转的时候,相互之间传递对象数据,这种需求还是比较常见的,本文实现了在开启新Activity的同时传递对象参数。首先是效果图:废话不多说直接展示代码1.SendActivity.java的内容:public class SendActivity extends Activity implements OnClickListener { Butto原创 2016-05-10 14:16:54 · 1401 阅读 · 0 评论 -
UI性能优化详解
设计师,开发人员,需求研究和测试都会影响到一个app最后的UI展示,所有人都很乐于去建议app应该怎么去展示UI。UI也是app和用户打交道的部分,直接对用户形成品牌意识,需要仔细的设计。无论你的app UI是简单还是复杂,重要的是性能一定要好。UI性能测试性能优化都需要有一个目标,UI的性能优化也是一样。你可能会觉得“我的app加载很快”很重要,但我们还需要了解终端用户的期望,是转载 2016-04-15 22:53:24 · 2038 阅读 · 0 评论 -
Android实现图片圆角显示的几种方式
在实际开发中我们经常会对图片进行圆角处理,这里做一个小总结,文章结尾还有一个不到100行实现的,支持圆形,圆角和TransitionDrawable的ImageView。图片的圆角显示,从实现方法上讲分为两种做法:在图片上做在控件上做从代码上讲,均使用 Android Graphics API:XfermodesRegionsCanvas.drawRoundRectCa原创 2016-04-20 10:02:39 · 15102 阅读 · 1 评论 -
Fragment切换动画的实现
公司项目的主界面是一个Fragment,各个Fragment之间切换的时候,总感觉不太美观,于是想添加切换动画,在网上找了不少demo,总是感觉笔者思路不清晰或者实现起来太麻烦。于是自己整理了一下,只要很简单的几行代码,就能实现我想要的切换动画了。首先是效果图:好了,效果图完毕,废话不多说,直接上代码。首先是MainActivity.java:public class Main原创 2016-04-26 18:02:06 · 1634 阅读 · 0 评论 -
URI与Uri的简单认识
上几篇给大家讲了ContentProvider,里面有用到Uri,可能很多同学对Uri是什么,怎么来的,这些都不是很熟悉,今天就给大家具体讲讲Uri一、URI与Uri大家可能经常会看到在开发时,怎么有的时候是URI,有的时候是Uri,这是怎么回事?名称如此相像的两个类是有什么区别和联系?1.所属的包不同。URI位置在java.net.URI,显然转载 2016-05-03 14:09:21 · 893 阅读 · 1 评论 -
底部导航demo
公司的项目,总感觉底部导航很不好看,于是在github上找了个比较不错的demo,效果还是蛮好看的,但是工程是AS格式的,公司项目目前使用的是Eclipse,于是花了点时间,把demo转换成了Eclipse工程,记录一下,方便以后回顾。先上效果图原创 2016-04-18 14:47:20 · 639 阅读 · 0 评论