android
文章平均质量分 60
xinglianfly
路漫漫其修远兮,吾将上下而求索。
展开
-
android 网络调试步骤
adb devices 列出当前连接的设备adb tcpip 5555 重启tcpip,并监听5555端口adb connect 连接手机adb devices (检验) 检验手机是否已经和电脑连接原创 2016-06-01 23:17:26 · 578 阅读 · 0 评论 -
android 内存泄漏原因及解决方案
转载自:https://blog.csdn.net/u012482178/article/details/78988176 https://blog.csdn.net/u010687392/article/details/49909477内存泄漏的原因android 系统为每个应用分配的内存是有限的,当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对...转载 2018-04-17 13:08:55 · 1609 阅读 · 1 评论 -
android 如何查找内存泄漏
转载自https://blog.csdn.net/itachi85/article/details/77826112?utm_source=gold_browser_extension https://blog.csdn.net/u012760183/article/details/52068490 对于内存泄漏,在Android中如果不注意的...转载 2018-04-17 16:28:47 · 3088 阅读 · 0 评论 -
android activity 四大启动模式及使用场景
转载自:https://blog.csdn.net/YeeCeeYee/article/details/64958184android activity的启动模式有4种。分别是standard,singleTop,singleTask和singleInstance。在AndroidManifest.xml中,通过标签的android:launchMode属性可以设置启动模式。stand...转载 2018-04-17 19:40:28 · 4764 阅读 · 0 评论 -
android 进程保活
转载自: https://blog.csdn.net/xiaoxiaohu_/article/details/73639637 http://www.infoq.com/cn/articles/wechat-android-background-keep-alive https://www.jianshu.com/p/63aafe3c12af 在安卓系统中,进程被杀的原因通常分为几个方面:...转载 2018-04-23 10:14:10 · 631 阅读 · 0 评论 -
EventBus--事件总线:观察者模式的拓展
为何要使用android应用开发中,经常会涉及Activity,Fragment,Service等不同组件或者模块之间的消息传递。使用传统的方法实现,往往代码不够优雅,而且不同组件和模块之间的耦合严重。随着模块的增多、代码逻辑的不断新增和修改,整个代码的架构就会显得越来越混乱。为了便于理解,下面举例说明:例1Activity中的不同的fragment之间需要进行通信,传统的做法是 ...原创 2018-05-08 20:10:41 · 2582 阅读 · 0 评论 -
android 网络连接保活
转载自: http://www.infoq.com/cn/articles/wechat-android-background-keep-alive http://www.52im.net/thread-341-1-1.html 在开发某些安卓应用中,如何做到客户端的后台保活是很重要的。保活,按照我们的理解包含两部分: 1、网络连接保活:如何保证消息接收的实时性 2、进程保活:尽量保证应...转载 2018-04-20 16:36:39 · 1751 阅读 · 0 评论 -
android 进程间通信
在一个android APP中,如果有占用内存比较大的操作,我们一般使用进程拆分。比如说对于Webview,图库等,由于存在内存系统泄露或者占用内存过多的问题,我们可以采用单独的进程。不仅如此,我们在一个app中可能会访问其他app的信息。因此,此时就需要用到进程通信。android中进程种类系统强制销毁进程时,面临一个问题:系统当中可能会运行多个进程,销毁哪些合适呢?这就是我们要讨论...原创 2018-05-09 21:20:15 · 376 阅读 · 0 评论 -
android Binder机制介绍
Binder是android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要依赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC作对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面阐述,首先通过介绍Binder通信模型和Binder通信...转载 2018-05-17 10:55:53 · 175 阅读 · 0 评论 -
Android消息机制之ThreadLocal的工作原理
转载自:https://blog.csdn.net/singwhatiwanna/article/details/48350919 从开发的角度来说,Handler是Android消息机制的上层接口,这使得开发过程中只需要和Handler交互即可。Handler的使用过程很简单,通过它可以轻松的将一个任务切换到Handler所在的线程中去执行。很多人认为Handler的作用是更新UI,这说的的确...转载 2018-07-02 16:05:24 · 311 阅读 · 0 评论 -
android 热修复方案总结
代码修复主要有三个方案,分别是底层替换方案、类加载方案和Instant Run方案。类加载方案在android类加载过程中,其中一个环节就是调用DexPathList的findClass方法,如下图所示。 public Class<?> findClass(String name, List<Throwable> suppressed) { ...原创 2018-06-29 10:27:03 · 338 阅读 · 0 评论 -
android Dalvik虚拟机
转载自:https://blog.csdn.net/luoshengyang/article/details/41338251简介在android5.0中,ART运行时取代了Dalvik虚拟机。虽然Dalvik虚拟机不再使用,但是它曾经的作用是不可磨灭的。因此,在研究ART运行时的垃圾收集机制之前,先理解Dalvik虚拟机的垃圾收集机制也是很重要和有帮助的。因此,本文就对Dalvik虚拟机...转载 2018-08-01 20:54:53 · 1750 阅读 · 0 评论 -
Android ART虚拟机
转载自:https://blog.csdn.net/luoshengyang/article/details/45017207 Android与ios相比,一直被人诟病它的流畅性。android的流畅性问题,有一部分原因就归结于它的应用程序和部分系统服务是运行虚拟机之上的,也就是运行在Dalvik虚拟机之上,而ios的应用程序和系统服务都是直接执行本地机器指令的。除了使用ATR替换Dalvik之...转载 2018-08-02 16:26:21 · 11553 阅读 · 3 评论 -
GC频繁抖动的主要原因
内存抖动内存抖动是因为大量的对象被创建又在短时间内马上被释放,如循环中分配对象,很容易引起GC,特别是在较大的循环次数或者一个循环中分配较多的临时对象时。瞬间产生大量的对象瞬间产生大量的对象,即使对象不大,也可能使得堆的可用空间达到阈值出发GC或导致堆的扩容产生GC。分配大内存块的对象分配大内存块的对象,如图片,大的byte数组等,虽然堆剩余内存空间足够,但是仍然可能出发GC,...转载 2018-08-02 16:44:35 · 39494 阅读 · 0 评论 -
Android图片加载方案--Bitmap的内存管理和优化方案
转载自:http://blog.csdn.net/mxm691292118/article/details/51028953一、加载按显示需要的比例缩小的图片1、先来说说屏幕密度在Android中,Imageview控件的长宽单位一般设置为dp/dip,而不用px。这样做的原因,是因为dp/dip与屏幕像素密度无关,px与屏...转载 2018-04-11 16:50:59 · 290 阅读 · 0 评论 -
android view的绘制流程
当一个应用启动的时候,会启动一个主activity,android系统会根据activity的布局来对它进行绘制。每个view负责绘制自己,而viewgroup还需要负责通知自己的子view进行绘制操作。视图绘制的过程可以分为三个步骤,分别是 Measure Layout 和 Drawprivate void performTraversals() { ...... ...原创 2018-04-11 16:41:55 · 177 阅读 · 0 评论 -
Picasso入门教程(一)
load(String imageUrl)将picasso依赖到你的项目上Gradle在你的项目的build.gradle添加如下这句话:compile 'com.squareup.picasso:picasso:2.5.2' MavenPicasso也支持Maven的项目: com.squareup.picasso picasso原创 2016-06-02 10:57:00 · 1160 阅读 · 0 评论 -
Picasso入门教程(二)
高级加载本篇文章介绍一下Picasso其他加载图片的方式。从Resources加载图片Picasso可以从本地资源加载图片,除了可以给一个String类型的Url参数之外,你可以给一个int类型的参数。int resourceId = R.mipmap.ic_launcher;Picasso .with(context) .load(resourceId) .into(ima原创 2016-06-02 11:35:17 · 577 阅读 · 0 评论 -
Picasso入门教程(三)
使用Listview实现一个简单的画廊首先我们需要一些测试的图片,我们在服务器上上传了一些比较好的图片供我们测试。public static String[] eatFoodyImages = { "http://i.imgur.com/rFLNqWI.jpg", "http://i.imgur.com/C9pBVt7.jpg", "http://i.翻译 2016-06-02 16:30:57 · 995 阅读 · 0 评论 -
Picasso入门教程(四) 如何处理空值(在ListView中)
这篇博客主要面向两类读者:1、遇到了IllegalArgumentException: Path must not be empty 这个报错信息。2、想要确定当在listview中加载不完整的image的时候,他们的app是否能够正常运行。我们将会在SimpleImageListAdapter 这个类中做我们的操作,代码如下:public class SimpleImageListAdapter翻译 2016-06-02 19:57:26 · 1589 阅读 · 0 评论 -
Picasso入门教程(五) Placeholder,errors,Fading
Placeholder:.placeholder()我们可能不需要解释这种现象:一个空的ImageView在你的UI中肯定不好看。如果你使用Picasso,你可能通过网络连接来加载图片,这取决于用户的环境,这可能会花费很长时间。一个比较好的解决方案是在加载图片的过程中,你可以先加载一个本地图片当做替代图片,直到从网络下载的图片加载出来。 Picasso的流接口使得这样实现变得非常简单!只需要调用.翻译 2016-06-02 20:32:25 · 3634 阅读 · 0 评论 -
Picasso入门教程(七) 根据图片的优先级按顺序请求
优先级:高优先级、中优先级、低优先级你可能正在想一个符合这个的情景,但是如果你想需要按照优先级来加载图片,你可以使用priority() 这个方法。这需要使用三个常量:HIGH ,MEDIUM ,LOW .默认的,所有的请求都使用MEDIUM 。赋予图片不同的加载优先级将会影响到Picasso的加载行为。例子<ScrollView xmlns:android="http://schemas.andr翻译 2016-06-04 22:18:51 · 1283 阅读 · 0 评论 -
Picasso入门教程(八)通过Tag()来管理图片
通过学习了如果加载图片,改变图片的大小,缩放图片以及从各方面如何影响图片的管理,我们再学一下一个更高级的也是最优的方法:tagging.Picasso提供了组织图片请求的方法来管理图片。Picasso的tag()的想法在上一个博客中,你已经看到了如果改变加载图片的优先级。如果你需要同时cancel,pause和resume好多图片可能是不够的。如果你的界面切换的很快,取消之前发出的已经过期的请求并且翻译 2016-06-04 23:10:35 · 2437 阅读 · 0 评论 -
Picasso入门教程(九)回调,remoteViews,通知
关于Picasso的知识你已经学习了很多了。尽管如此,直到现在你也是只做了往ImageView中加载图片。你可能需要加载一张图片,但是这张图片不需要从ImageView中显示出来,或者你想学习关于cache的一些东西。 如果你对这些话题感兴趣,请继续阅读下去。Callbacks and Targets在我们研究回调之前,指出不同的加载图片的方式是非常有意义的。Picasso通常提供了同步加载和不同翻译 2016-06-05 11:42:21 · 1861 阅读 · 0 评论 -
Picasso入门教程(十)图片旋转和变换
如果你阅读了之前的博客,你就会知道如何使用Picasso加载图片和处理图片。到目前为止,我们的图片还是untouched状态(我们希望resize 和 scale图片,这样可以让图片更合适一些)这篇博客会讲图片的操作。图片旋转在我们学习高级图片变化之前,你需要先学习一些图片旋转。Picasso支持图片旋转。有两种图片旋转:简单的旋转和复杂的旋转简单旋转简单旋转需要这样调用一个方法:rotate(fl翻译 2016-06-05 18:05:37 · 3091 阅读 · 0 评论 -
Picasso入门教程(十一)Influencing Image Cache(影响图片缓存)
我们之前已经讲过,Picasso使用硬盘和内存中缓存的图片,这样加载起来会更快一些。在这篇博客中,我们深入了解一下Picasso的缓存策略。标准行为下面是Picasso的官方文档: This instance is automatically initialized with defaults that are suitable to most implementations.翻译 2016-06-05 21:08:05 · 1017 阅读 · 0 评论 -
Picasso入门教程(十二)Cache Indicators,Logging & Stats
Picasso的内存缓存机制特别棒,尤其是当你需要处理大量的图片的时候。这篇博客中,我们将介绍一下如何检验自己的定制是成功的。Cache Indicators如果你没有跳过之前的博客,你应该知道Picasso使用两种内存:disk和memory。也可以从网络上加载图片,这是非常耗时而且费力的做法。 作为一个开发者,研究一张图片从哪里来这是非常重要的。你可以激活cache Indicators来实现翻译 2016-06-05 22:25:29 · 962 阅读 · 0 评论 -
java&android线程池-Executor框架之ThreadPoolExcutor&ScheduledThreadPoolExecutor浅析(多线程编程之三)
java&android线程池-Executor框架之ThreadPoolExcutor&ScheduledThreadPoolExecutor浅析(多线程编程之三)转载 2017-10-31 22:28:04 · 260 阅读 · 0 评论 -
android 触摸事件传递机制
一次完整的事件传递主要包括三个阶段,分别是事件的分发、拦截、和消费。事件传递的三个阶段分发(dispatch) 事件分发对应dispatchTouchEvent方法,在安卓系统中,所有的触摸事件都是通过这个方法来分发的 public boolean dispatchTouchEvent(MotionEvent ev) 方法返回true代表事件被当前视图消费掉,不再继续分发事...原创 2018-04-11 12:39:43 · 325 阅读 · 0 评论 -
动态代理初探
代理可以看成一种包装器,通过调用自己的方法来传递函数的调用,在传递过程中,可能会增加一些新的功能。而动态代理,可以使用一个类的一个方法为任意一个类提供多个方法的调用,可以看做是任何接口的一个实现。它将所有的方法调用都路由到一个handler中——invoke()方法。动态代理可以用于这种情况下,当有多个逻辑相似的代码时,我们可以通过使用动态代理。代理类主要负责为委托类预处理消息、过滤消息、把消...转载 2018-09-06 11:56:53 · 146 阅读 · 0 评论