
Android
zjf1165
这个作者很懒,什么都没留下…
展开
-
Gradle学习笔记 - 编译过程中部分task作用
在自定义gradle插件时,最头疼的莫过于不知道将插件加入到执行流程中哪个地方,下面梳理了一些主要task的作用:1、preDebugBuild 获取compile 和 runtime的依赖包并对其做一些版本号,依赖等的校验工作。2、compileDebugAidl 将aid...原创 2020-03-27 21:03:15 · 780 阅读 · 0 评论 -
彻底理解安卓应用无响应机制
原文地址: http://gityuan.com/2019/04/06/android-anr/原创 2020-02-19 16:58:47 · 241 阅读 · 0 评论 -
Android apt学习记录
AbstractProcessor 注解处理器javac的一个工具,用来在编译时扫描和编译和处理注解(Annotation)的。只能生成新文件。ProcessingEnvironment提供 Element,Filer,Messager等工具,Filer在生成java文件使用,Messager可以打印日志,调试时使用的最多。 (Messager日志在Android studio - Bu...原创 2020-01-08 11:05:16 · 367 阅读 · 0 评论 -
Android 内存泄漏总结(转)
Android 内存泄漏总结 转自:https://yq.aliyun.com/articles/3009 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己转载 2016-08-09 22:55:21 · 254 阅读 · 0 评论 -
TX Android电面问题
16年8月9号进行的电话面试,整个电面过程中基本上只涉及Android基础问题,有点出乎意料。 有部分问题忘记了,其中记得的有: 1. Activity生命周期 2. onStop() 方法中能不能进行读写数据库操作 3. 如果onstop方法中不能操作数据库,该怎么做 4. onSaveInstanceState()方法中能不能操作数据库 5. onSaveInstanceState(原创 2016-08-12 15:09:33 · 542 阅读 · 0 评论 -
Android中Activity执行restart过程中涉及到的四种数据存储恢复的方法(转)
转自:http://www.2cto.com/kf/201511/449241.html 我们知道,当Configuration Change发生的时候(比如横竖屏切换等),会导致Activity重启,即先destroy,然后会restart,一般情况下restart的时间比较短,为了保证一致的用户体验,我们应该在Activity重启前将一些数据存储下来,然后在restart的时候重新根据这些数据转载 2016-08-12 15:52:57 · 1496 阅读 · 0 评论 -
Android中内存泄露与如何有效避免OOM总结(转)
转自:http://m.blog.youkuaiyun.com/article/details?id=51579080一、关于OOM与内存泄露的概念我们在Android开发过程中经常会遇到OOM的错误,这是因为我们在APP中没有考虑dalvik虚拟机内存消耗的问题。1、什么是OOMOOM:即OutOfMemoery,顾名思义就是指内存溢出了。内存溢出是指APP向系统申请超过最大阀值的内存请求,系统不会再分配多余转载 2016-08-12 16:29:02 · 1682 阅读 · 0 评论 -
Android 代码判断是否获取ROOT权限(转)
/** * 判断当前手机是否有ROOT权限 * @return */ public boolean isRoot(){ boolean bool = false; try{ if ((!new File("/system/bin/su").exists()) && (!new File("/system/xb转载 2016-08-12 16:41:19 · 408 阅读 · 0 评论 -
Android性能分析-traceview
TraceView简介traceview主要Android平台特有的数据采集和分析工具,主要用于分析Android应用程序的瓶颈。而traceview本身只是一个数据分析工具,数据采集则需要SDK中Debug类或者是DDMS中的工具。 简单描述:traceview就是分析一个应用进程中每个线程(具体可以定位到某个方法)的耗时情况,即占用cpu时间。用法 对于已知代码的程序: 对于一原创 2016-08-14 11:51:45 · 429 阅读 · 0 评论 -
Android性能分析-内存泄漏
转:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2565.html转载 2016-08-14 15:38:29 · 302 阅读 · 0 评论 -
Android面试:主线程中的Looper.loop()一直无限循环为什么不会造成ANR?(转)
引子:正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常。造成ANR的原因一般有两种: 当前的事件没有机会得到处理(即主线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了) 当前的事件正在处理,但没有及时完成为了避免ANR异常,android使用了Handler消息处理机制。让耗时操作转载 2016-08-15 12:41:58 · 6572 阅读 · 1 评论 -
Android自定义View教程目录
http://www.gcssloop.com/customview/CoordinateSystem原创 2019-03-06 11:25:10 · 553 阅读 · 0 评论 -
CoordinatorLayout解析
CoordinatorLayout在CoordinatorLayout出现之前,为了处理嵌套滑动逻辑,一般需要继承一个ViewGroup,重写onInterceptTouchEvent和onTouchEvent等方法并实现相应的逻辑,然后在布局中直接引用。这样做有一点非常不好的地方就是:代码冗余,同时处理逻辑也比较繁琐。为此,CoordinatorLayout提供了一套非常完美的解决方案,具体来...原创 2019-04-28 20:09:47 · 347 阅读 · 0 评论 -
Android网络请求(转)
转载自:http://www.jianshu.com/p/3141d4e46240转载 2016-08-09 21:13:05 · 233 阅读 · 0 评论 -
使用ViewPager加载页面出现空白--笔记
带有ViewPager的程序,首次启动时首页空白,而切换页面后回到首页正常显示为了便于管理,通常为ViewPager的每个子页面 建立一个基类,然后用一个集合(一般用ArrayList)承载该ViewPager的所有子页面,然而在该基类的构造方法中一般引用initView()方法,使得某个子类在new的时候就创建视图,而在pageradapter中的public Object instantiat原创 2016-04-06 17:14:32 · 7395 阅读 · 3 评论 -
Fragment回退栈
getFragmetManager().beginTransation.addToBackStack(null)将当前Fragment的状态信息压入其所在activity的回退栈中原创 2015-11-22 19:06:31 · 595 阅读 · 0 评论 -
手势识别--GestureDetector
想法:在viewpager轮播显示内容(如图片)时,想要实现触摸停止轮播,抬起时继续轮播 做法:利用手势识别处理点击事件复习viewpager轮播知识:想要实现viewpager的轮播效果,一般有两种做法:定时器和handler 一般常见的是利用handler的sendMessageDelayed方法处理起来较为简单、常见。 事例代码:Handler handler = new Han原创 2016-04-12 13:37:38 · 598 阅读 · 0 评论 -
PopupWindow 笔记
给popupwindow设置动画时,必须给popupwindow设置背景 即:PopupWindow.setBackgroundDrawable()PopupWindow.setFocusable(boolean),该方法是为了让popupwindow在显示时获取(不获取)交点。若设置为false,则popupwindow出现时,父控件拦截事件,popupwindow中的控件获取不到交点。设置为原创 2016-04-25 18:39:00 · 379 阅读 · 0 评论 -
ListView头部视差效果
ListView头部视差效果当点击一个listView向下滑动时,listView头部的图片会缓慢向下移动,给人的感觉是很”吃力”的向下显示出来原理当给一个listView添加一个imageView作为HeadView时,动态控制此imageView的显示高度,并控制其高度的变化率小于手指在y轴移动的距离变化率,从而给人一种“吃力”的感觉。事例代码public class myListView ex原创 2016-05-04 11:39:53 · 134 阅读 · 0 评论 -
ViewDragHelper空指针异常笔记
ViewDrapHelper简介在实际项目中,有时会需求一个ViewGroup中的子view能够随着用户手指的拖动而发生相应的变化,如随着手指的拖动而运动等,但处理onTouchEvent和onInterceptTouchEvent事件比较麻烦且易出错,因此google提供了一个类:ViewDrapHelper类,位于support-v4包中。该类对用户拖动view动作进行一些列封装,方便开发者使用原创 2016-05-05 22:20:48 · 488 阅读 · 0 评论 -
拖动Layout时,出现向上滑动
背景在自己实现类似slidingmenu侧边栏效果时,当侧边栏显示后,拖动侧边栏向上滑动一点点时,侧边栏整个layout向上移动30dp的高度,但侧边栏layout的宽和高明明设置match_parent原因由于在写layout时想使layout的第一个item离状态栏30dp远,因此给侧边栏layout设置android:layout_marginTop="30dp",此乃罪魁祸首。正确写法将an原创 2016-05-17 17:54:51 · 664 阅读 · 0 评论 -
Android Assests目录遍历
背景当一个Android app第一次安装到手机上并启动时,需要初始化一些数据,其中包括程序运行时所必须依赖的文件、数据库等,例如电话号码归属地数据库等,因此,可以在程序开发过程中可以将一些必要的数据或文件放在Assests(该文件夹下的内容不会被编译)目录下,这样做的好处是无需程序首次运行时还要联网下载这些数据;当然有利必有弊,其缺点apk大小相应的会增加。思路方法一:在Assests文件夹下放一原创 2016-05-07 22:42:35 · 1673 阅读 · 0 评论 -
固定ListView的HeadViev的高度
事例布局代码(HeadView的布局):<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wr原创 2016-04-24 17:12:13 · 426 阅读 · 0 评论 -
利用接口实现service与Activity消息传递
背景最近在仿Android版QQ,在实现消息传递的时候遇到一个问题:在service中接受聊天消息,当收到聊天消息后,service负责将该聊天消息传递给聊天界面,怎么能是消息无延时的在service和Activity中传递呢?一般的做法是使用广播,如在音乐播放器中播放进度的显示等,而使用广播发送消息时会因为Android系统的影响而导致消息不能按时传送过去,因此研究了下使用接口无延时的传递。原理1原创 2016-05-16 23:20:03 · 3025 阅读 · 0 评论 -
Serivce生命周期-先startService,然后bindService
复习startService启动Service生命周期:onCreate( )-> onStartCommand( )-> onDestroy( ) bindService 启动Service生命周期:onCreate( ) -> onBind( ) -> onUnbind( ) -> onDestroy( ) 说明:对于一个服务来说,无论使用哪种方式启动,oncreate方法指执行一次原创 2016-07-11 15:06:38 · 1521 阅读 · 1 评论 -
Activity与Service通过Messenger交互
背景:最近实现了一个本地版音乐播放,在编写代码过程中遇到个问题:当一首歌在Service中播放时,从后台或播放列表进入播放界面,如何使界面上显示当前播放歌曲的详情信息,如歌名、艺术家、歌词显示的位置、播放进度等。在上一篇博客中用接口的形式实现Activity与Service无延时的交互,而在这篇中研究的如何使用Messenger实现上述需求。原理:Activity 在绑定 Service时,通过Me原创 2016-07-10 18:34:04 · 638 阅读 · 0 评论 -
Android消息传递机制
背景需求在Android中,当遇到子线程需要刷新UI时,最常的做法就是handler,当然还有其他方便的方法如Android给我们提供的runOnUiThread(runnable)方法,但归根结底都是使用handler来刷新UI的。 Android消息传递原理 简单的讲:handler发送(post或send)一条消息;MessageQueue(队,实际上是一个用单链表实现的队列)接受并存储该原创 2016-05-07 13:13:51 · 1747 阅读 · 0 评论 -
Android手机卫士总结
安全卫士总结:一、splash界面: 主要用于展示logo,初始化,检查版本更新,创建桌面图标等操作 初始化: 1、拷贝数据: 文件的输入输出流的使用如:将电话归属地信息数据库拷贝到系统data/data/包名/files下, 将病毒数据库拷贝到data/data/包名/files下等代码: if(new File原创 2015-09-19 19:57:32 · 1068 阅读 · 0 评论