Android知识
runrun117
这个作者很懒,什么都没留下…
展开
-
JNI与NDK
JNI与NDK的关系以及NDK在Android Studio中的配置点击打开链接转载 2018-03-07 15:41:45 · 93 阅读 · 0 评论 -
3分钟全面了解Android主流图片加载库
https://www.jianshu.com/p/97994c9693f9转载 2018-03-15 09:15:03 · 98 阅读 · 0 评论 -
定义Activity启动模式
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/41087993定义启动模式启动模式允许你去定义如何将一个Activity的实例和当前的任务进行关联,你可以通过以下两种不同的方式来定义启动模式:1.使用manifest文件当你在manifest文件中声明一个Activity的时候,你可以指定这个Activity在启动的时候该如何与任...转载 2018-03-08 18:51:50 · 304 阅读 · 0 评论 -
Android Glide使用
http://blog.csdn.net/huaxun66/article/details/73332546Google推荐的图片加载库Glide介绍,与Picasso的对比http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.htmlGlide-内存缓存与磁盘缓存http://blog.csdn.net/yuly...转载 2018-03-16 08:08:39 · 142 阅读 · 0 评论 -
Android GC 原理探究
转博客http://geek.csdn.net/news/detail/193654转载 2018-03-09 10:05:57 · 125 阅读 · 0 评论 -
Application
1:Application是什么? http://blog.csdn.net/pi9nc/article/details/11200969 Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自...原创 2018-03-15 15:14:57 · 273 阅读 · 0 评论 -
android Service
1.Service简单概述 Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供...原创 2018-03-15 20:15:21 · 139 阅读 · 0 评论 -
Intent传递对象的两种方法(Serializable,Parcelable)
Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,使用:http://blog.csdn.net/xyz_l...转载 2018-03-15 20:58:54 · 1936 阅读 · 0 评论 -
Android消息传递之EventBus 3.0使用详解
http://www.cnblogs.com/whoislcj/p/5595714.html转载 2018-03-16 08:09:00 · 125 阅读 · 0 评论 -
Android 网络请求登录后更新页面实现 Handler+HTTP请求详解
为了实现登录功能,我们需要一下几步:1、获取UI数据,并向服务器发送请求2、等待返回数据,解析3、将返回数据更新到UI线程中为了完成以上几步,我根据每步的功能提出自己的解决方法,顺便整理出对应的知识供大家参考。Handler众所周知,Android程序运行会开启一个UI线程,也就是主线程,用于处理UI事件。只有在UI线程中才能进行对UI的各种操作,如果在非UI线程中直接对界面元素进行操作,会报错。...原创 2018-03-09 22:50:03 · 3273 阅读 · 0 评论 -
Android中解析json字符串
在访问服务器,返回的数据为json字符串,如何解析呢?利用JSONObjective和JSONArray形如{"reUser":{"uid":"6","uname":"a","upwd":"a"}}利用JSONObjective进行解析JSONObject jsonObject = new JSONObject("其中放JSON字符串");//原创 2018-03-10 08:07:30 · 2557 阅读 · 0 评论 -
Runnable接口相对于继承Thread对比
实现Runnable接口相对于继承Thread类来说,有如下显著的好处: (1)适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序的代码,数据有效的分离,较好地体现了面向对象的设计思想。 (2)可以避免由于Java的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方...转载 2018-03-10 10:50:19 · 324 阅读 · 0 评论 -
AsyncTask+线程池
在Android中我们可以通过Thread+Handler实现多线程通信,一种经典的使用场景是:在新线程中进行耗时操作,当任务完成后通过Handler向主线程发送Message,这样主线程的Handler在收到该Message之后就可以进行更新UI的操作。上述场景中需要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们可以使用AsyncTask类。AsyncTask是An...转载 2018-04-13 12:34:49 · 633 阅读 · 0 评论 -
RelativeLayout
相对布局可以让子控件相对于兄弟控件或父控件进行布局,可以设置子控件相对于兄弟控件或父控件进行上下左右对齐。RelativeLayout能替换一些嵌套视图,当我们用LinearLayout来实现一个简单的布局但又使用了过多的嵌套时,就可以考虑使用RelativeLayout重新布局。相对布局就是一定要加Id才能管理。RelativeLayout中子控件常用属性:1、相对于父控件,例如:android...原创 2018-03-10 16:04:06 · 195 阅读 · 0 评论 -
Android Adapter
AdapterAdapter相当于一个数据源,可以给AdapterView提供数据,并根据数据创建对应的UI,可以通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作为数据源。常见的AdapterView的子类有ListView、GridView、Spinner和ExpandableListView等。本文就以ListView为例讲解各种常见的Ada...原创 2018-03-10 20:08:12 · 206 阅读 · 0 评论 -
自定义Apater 复杂显示ListView
前言Adapter用于存放数据。Android是完全遵循MVC模式设计的框架,Activity是Controller,layout是View 因为layout五花八门,很多数据都不能直接绑定上去,所以Android引入了Adapter这个机制作为复杂数据的展示的转换载体,所以各种Adapter只不过是转换的方式和能力不一样而已。 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(V...原创 2018-03-11 10:05:48 · 334 阅读 · 0 评论 -
自定义View
Android自定义View 一<最简单的自定义View>Android 深入理解Android中的自定义属性【Android - 自定义View】之自定义View浅析Android的自定义View及View的绘制流程...转载 2018-04-14 21:18:34 · 377 阅读 · 0 评论 -
一个Activity多个Handler时 Message是如何传递的
平时我们直接new Handler(),源码里面执行的是 /** * Default constructor associates this handler with the {@link Looper} for the * current thread. * * If this thread does not have a looper, this han...转载 2018-03-11 10:45:18 · 717 阅读 · 0 评论 -
Looper
Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,使用Looper.prepare()和Looper.loop()创建了消息队列就可以让消息处理在该线程中完成。使用Looper需要注意什么 写在Looper.lo...转载 2018-03-11 10:57:58 · 3826 阅读 · 0 评论 -
Android Volley框架源码详细解析
Part 1.从RequestQueue说起Volley框架的使用Volley是Google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection,甚至支持OkHttp,而且Volley里面也封装了ImageLoader,所以如果你愿意你甚至不需要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,对于...转载 2018-03-17 08:17:59 · 140 阅读 · 0 评论 -
Android之——使用HttpClient和HttpURLConnection
1、客户端连接服务器实现内部的原理:分析上图,步骤如下:第一步:在浏览器客户端中得到用户输入的内容。第二步:浏览器得到这个网址之后,内部会将这个域名发送到DNS上,进行域名解析。得到它的IP之后就会链接到指定的服务器上,假如服务器的地址是:221.104.13.32:80,从浏览器到服务器端口它使用到最底层的TCP/IP协议。第三步:实现TCP/IP协议用Socket来完成,使用了Socket的套...转载 2018-03-17 08:57:35 · 293 阅读 · 0 评论 -
okhttp
实现 集成之前自然要导入okhttp的jar包,在android studio中可以很方便地在gradle中添加依赖[html] view plain copycompile group: 'com.squareup.okhttp', name: 'okhttp', version: '2.7.5' 点击可查看okhttp的最新版本 同步之后我们先来看看okhttp的基本用...转载 2018-03-17 09:25:42 · 218 阅读 · 0 评论 -
Android 使用HttpURLConnection发送HTTP请求
http://blog.csdn.net/tongsiyuaichidami/article/details/79229539Android中HttpURLConnection使用详解带头部解析:http://blog.csdn.net/iispring/article/details/51474529 在过去,Android上发送HTTP请求一般有两种方式,HttpURLConnection和...转载 2018-03-17 09:42:19 · 351 阅读 · 0 评论 -
HTTP连接池、线程池、数据库连接池、ThreadPoolExecutor
一、为什么要用Http连接池1、降低延迟:如果不采用连接池,每次连接发起Http请求的时候都会重新建立TCP连接(经历3次握手),用完就会关闭连接(4次挥手),如果采用连接池则减少了这部分时间损耗,别小看这几次握手,本人经过测试发现,基本上3倍的时间延迟2、支持更大的并发:如果不采用连接池,每次连接都会打开一个端口,在大并发的情况下系统的端口资源很快就会被用完,导致无法建立新的连接一、 线程池的原...转载 2018-03-17 10:36:13 · 1969 阅读 · 0 评论 -
如何提高服务器并发处理能力
说明以下内容为入门级介绍,意在对老技术作较全的总结而不是较深的研究。主要参考《构建高性能Web站点》一书。 什么是服务器并发处理能力一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强有什么方法衡量服务器并发处理能力1. 吞吐率吞吐率,单位时间里服务器处理的最大请求数,单位req/s从服务器角度,实际并发用户数的可以理解为服务器当前维护的代表不同用户的文件描述符总...转载 2018-03-17 11:11:12 · 530 阅读 · 0 评论 -
android 中IntentService的使用场景
IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或stopSelf()。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的...转载 2018-03-17 14:14:08 · 810 阅读 · 0 评论 -
Handler、Thread和HandlerThread的差别
Handler会关联一个单独的线程和消息队列,Handler默认关联主线程,如果要在其他线程执行,可以使用HandlerThread。 HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,主要的作用是建立了一个线程,并且创立了消息队列,有来自己的looper,可以让我们在自己的线程中分发和处理 消息。http://blog.cs...转载 2018-03-17 14:23:18 · 869 阅读 · 0 评论 -
认清Android框架 MVC,MVP和MVVM
相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候想用MVP的,代码写着写着就变成了MVC,久而久之就对它们三个的选择产生了恐惧感,如果你也是这样的人群,那么这篇文章可能会对你有很大的帮助,希望大家看完都会有收获吧!文章重点:(1)了解并区分MVC,...转载 2018-03-17 15:31:37 · 117 阅读 · 0 评论 -
Error:Failed to resolve: com.android.support:appcompat-v7:27.+错误
要改。。。。但不要改buildTools原创 2018-03-17 15:59:10 · 257 阅读 · 0 评论 -
View点击事件机制
当android系统发生触摸事件时,会把触摸事件发送给顶层Window(至于是怎么传递给Window的,这里暂时不深入研究,涉及到WindowManager,WindowManagerService等跨进程的调用过程,也涉及到Activity的启动过程分析),这里是PhoneWindow,由于给PhoneWindow设置了回调接口,在Activity当中实现了这个接口-> 顶层PhoneWi...转载 2018-04-14 21:18:03 · 4595 阅读 · 0 评论 -
OOM
一、什么是OOMOOM(out of memory)即内存泄露。一个程序中,已经不需要使用某个对象,但是因为仍然有引用指向它垃圾回收器就无法回收它,当该对象占用的内存无法被回收时,就容易造成内存泄露。Android的一个应用程序的内存泄露对别的应用程序影响不大,因为为了能够使得Android应用程序安全且快速的运行,Android的每个应用程序都会使用一个专有的Dalvik虚拟机实例来运行,也就是...原创 2018-04-13 12:33:43 · 1678 阅读 · 0 评论 -
自定义view点击事件
,我们可以通过Button点击事件来类比学习下,首先看Button的点击事件是如何使用的: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); ...转载 2018-03-18 19:03:06 · 961 阅读 · 0 评论 -
view点击事件
,我们可以通过Button点击事件来类比学习下,首先看Button的点击事件是如何使用的: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); ...转载 2018-03-19 07:28:44 · 626 阅读 · 0 评论 -
Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
一、使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Activity处理。这种带数据的意图跳转需要使用activity的onActivityResult()方法。(1)startActivityForResult(Intent intent, int r...转载 2018-03-19 07:29:43 · 309 阅读 · 0 评论 -
Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量。对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理,每次打开应用都去网络获取图片,那么用户可就不乐意了,这里的处理就是指今天要讲的缓存策略(缓存层分为三层:内存层,磁盘层,网络层)。 关于缓存层的工作,当我们第一次打开应用获取图片时,先到网络去下载...转载 2018-03-19 10:06:02 · 112 阅读 · 0 评论 -
Android事件分发机制详解:史上最全面、最易懂
https://www.jianshu.com/p/38015afcdb58转载 2018-03-19 11:10:25 · 139 阅读 · 0 评论 -
Android 性能优化 四 布局优化merge标签的使用
小白:之前分享了ViewStub标签的使用。Android还有其它优化布局的方式吗?小黑:<merge />标签用于降低View树的层次来优化Android的布局。先来用个样例演示一下:首先主须要一个配置文件activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr...转载 2018-03-19 13:23:41 · 124 阅读 · 0 评论 -
为什么不能在BroadcastReceiver中开启子线程
如果开发者需要在Service处理耗时任务,建议在Service中另外启动一条新线程来处理该耗时任务.就像前面BindService中看到的,程序在BindService中的onCreate()方法中启动了一条新线程来处理耗时任务.可能有读者感到疑惑:直接在其他程序组件中启动子线程来处理耗时任务不行吗?这种方式也不可靠,由于activity可能会被用户退出,Broadcast Receiver...转载 2018-03-19 14:27:58 · 646 阅读 · 0 评论 -
保证重新不会被杀死
作者:闭关写代码链接:https://www.zhihu.com/question/29826231/answer/71207109来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。从技术角度概括一下现在普遍的防杀方法Service设置成START_STICKY,kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样通过 startForeground...转载 2018-03-19 15:25:31 · 151 阅读 · 0 评论 -
1 进程不被杀死的方法
1 进程不被杀死的方法1、提高Service的优先级:这个,也只能说在系统内存不足需要回收资源的时候,优先级较高,不容易被回收,然并卵…2、提高Service所在进程的优先级:效果不是很明显3、在onDestroy方法里重启service:这个倒还算挺有效的一个方法,但是,直接干掉进程的时候,onDestroy方法都进不来,更别想重启了4、broadcast广播:和第3种一样,没进入onDestr...转载 2018-03-19 15:31:21 · 472 阅读 · 0 评论