android
Andylwlcln
android工程师
展开
-
android64k(方法书超限)
android规定了dex的最大方法数是65535,所以超过这个数app就无法启动,不过,由于app的发展,导致应用体量的迅速膨胀,所以现在随意一个app都会面临这个问题,所以,作为开发人员,对于这个问题的解决主要有:删除多余jar包,选用jar包时尽量用方法数少的jar,尽量多自己写代码实现功能,少用尽量不用第三方库。不过这些方法都是治标不治本。Introducing原创 2016-12-08 12:02:18 · 282 阅读 · 0 评论 -
android复制粘切的实现
main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"原创 2017-11-01 11:04:25 · 252 阅读 · 0 评论 -
android Studiod的快捷键
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本C原创 2017-12-11 15:48:58 · 456 阅读 · 0 评论 -
Android常用知识点总汇
Android常用知识点总汇一、系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。 如果在你的android系统上安装了多种浏览器,能否指定某浏览器访问指定页面?答案当然是:肯定的。 具体方法如下:Intent intent = new Intent(); intent.setAction("android.intent.action.原创 2017-12-12 11:12:33 · 135 阅读 · 0 评论 -
android AsyncTask介绍
AsyncTask和Handler对比1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控 使用的缺点:l原创 2017-12-12 11:14:49 · 111 阅读 · 0 评论 -
andorid消息推送
1.引言 所谓的消息推送就是从服务器端向移动终端发送连接,传输一定的信息。比如一些新闻客户端,每隔一段时间收到一条或者多条通知,这就是从服务器端传来的推送消息;还比如常用的一些IM软件如微信、GTalk等,都具有服务器推送功能。 推送方法如下: 1)通过SMS进行服务器端和客户端的交流通信。 在Android平台上,你可以通过拦截SMS消息并且解析消息内容来原创 2017-12-12 13:49:49 · 337 阅读 · 0 评论 -
Android Gradle 使用教程
1.介绍如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考1.1新构建系统的特性gradle构建系统具有如下的特点:易于代码和资源复用易于创建应用的版本,例如发布多apk以及应用的不同渠道版本构建过程易于配置,扩展和优化良好的IDE整合1.2为什么使用Gradle?Gradle既是一个先进的构建系统原创 2017-12-12 11:40:54 · 3411 阅读 · 0 评论 -
AchartEngineActivity引擎绘制柱状图、曲线图
1.简介 AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。该项目地址位于: http://code.google.com/p/achartengine/。关于里面类的具体使用,请下载响应的文档说明(主页上有)。2.开发步骤1)在工程中新建转载 2017-12-12 14:39:36 · 246 阅读 · 0 评论 -
Android桌面快捷方式的实现
1)创建 /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent原创 2017-12-12 14:43:51 · 2509 阅读 · 1 评论 -
Android Studio3.0升级gradle遇到的坑
升级了android studio3.0后,对于文件的搜索和方法中参数的使用,是一个重大的改变,但升级gradle后,缺出现很多的问题。个人整理一下,希望对大家有所帮助。说明:我原来的环境是as2.3+gralde2.14.1+plugin2.2.3升级后的环境是:as3.0+gradle4.2.1+plugin3.0.01、Error:(82, 0) Ca转载 2017-12-13 10:27:12 · 3764 阅读 · 0 评论 -
Android Studio手动下载配置Gradle的方法
问题(1) Android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?需要解决上面问题,需要了解一下知识。Android Studio怎么知道该用哪个Gradle呢?AS一个项目所用的Gradl转载 2017-12-13 10:44:48 · 429 阅读 · 0 评论 -
dp和px换算公式
dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:在320x480分辨率,像素密度为160,1dp=1px在480x800分辨率,像素密度为240,1dp=1.5px计算公式:1dp*像素密度/160 = 实际像素数原创 2017-12-22 11:02:14 · 3674 阅读 · 0 评论 -
android屏幕适配
前言Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合:Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormzhang:Android 屏幕适配鸿洋:Android 屏幕适配方案凯子: Android屏幕适配全攻略(最权威的官方适配指导)自身的思考&实践 给你带来一种全新、全面转载 2017-12-22 11:05:51 · 282 阅读 · 0 评论 -
builer设计模式
当我第一次使用Picasso的时候,看见下面的官网示例时,我和我的小伙伴都惊呆了!Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);如此简洁明了的使用方式,如此灵活多变的链式调用,让我深深地迷住了,然后我一直苦苦追求它,奈何天资愚笨,不知如何掀起它的神秘面纱,直到我在网上找到了这篇教程...原创 2017-12-15 09:32:29 · 151 阅读 · 0 评论 -
20条最最常用的Linux命令讲解
玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可转载 2017-12-24 07:30:20 · 587 阅读 · 0 评论 -
Android开发之生成自己的签名文件及App签名打
首先,要想生成Android App的签名文件必须先配好Android开发环境,因为签名文件的生成需要进入jdk中的bin目录,如果还未配好开发环境,请自行百度。下面,我们开始生成自己的签名文件,第一步,打开cmd,进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下;第二步,在bin目录下输入命令 keytool,回车;转载 2017-12-15 16:28:23 · 581 阅读 · 0 评论 -
配置android开发环境
配置好android环境变量后在dos窗口下输入android命令显示出正确的结果,但输入adb命令后却出现adb不是内部或外部的命令,也不是可运行的程序或批处理文件,百思不得其解,google问题答案,方案大概有两种。现呈列如下,方便日后学习.方案一:找到自己安装androidSDK的路径,比如我的就是C:\Program Files\Android\android-sdk,进去plat原创 2017-12-07 16:14:45 · 108 阅读 · 0 评论 -
Android开发应用框架汇总
先来说一下常见的Android框架模式:MVC、MVP、MVVM这三种框架中,我们耳熟能详的就是MVC和MVP了吧,接下来我们简单介绍一下:MVCView:XML布局文件。Model:实体模型(数据的获取、存储、数据状态变化)。Controllor:对应于Activity,处理数据、业务和UI。从上面这个结构来看,Android本身的设计还是符合MVC架构的,但是Andr...转载 2019-03-27 22:30:38 · 1127 阅读 · 0 评论 -
内存溢出问题
java.lang.OutOfMemoryError OOM: 内存溢出,内存泄露Out of memory on a 27144012-byte allocation.堆内存主要是类实例和数组分配空间的.原因:设备中堆内存是16m,程序加载图片需要的内存是26m,当需要的内存空间大于堆内存空间就会抛出OOM的异常; 解决办法:缩放图片加载到内存中 步原创 2017-07-28 16:49:14 · 187 阅读 · 0 评论 -
ContentProvider
为让其他软件能操作自己工程中的数据数据库表,给其他软件提供了访问数据库的同一方式;这种方式就是contentprovider作用:把应用本身的私有数据提供给其他应用使用。 产生原因:一般应用的私有数据(数据库等)不能被其应用访问,但是如联系人、短信等数据要用第三方APP备份或者读取使用时就有冲突,所以就产生了内容提供者ContentProvider,它向其他的应用提供了访问自己私有数据的方原创 2017-07-27 14:20:25 · 183 阅读 · 0 评论 -
Log的日志级别
Log.v(TAG, "日志级别 v"); 提示 黑色Log.d(TAG, "日志级别 debug"); 调试 蓝色Log.i(TAG, "日志级别 info"); 信息 绿色Log.w(TAG, "日志级别 warn"); 警告 橘黄色Log.e(TAG, "日志级别 error"); 错误 红色原创 2017-07-10 17:00:08 · 1076 阅读 · 0 评论 -
输入流与输出流的区别
java输入流与输出流的判断点就是内存,东西读入内存就是输入流,东西从内存中读出来就是输出流;其次加入内存,磁盘,网络,终端(屏幕/键盘)程序操作的数据都应该是在内存里面,内存是你操作的主对象,把数据从其他资源里面传送到内存里面,就是输入,反之。把数据从内存传送到其他资源就是输出。原创 2017-07-12 16:57:39 · 1551 阅读 · 0 评论 -
抽象类与接口的区别
abstract class 和 interface是java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在。才赋予了java强大的面向对象的能力。abstract class 和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,原创 2017-07-12 22:17:05 · 133 阅读 · 0 评论 -
回调函数实现步骤
回调函数的实现机制是:1.定义一个回调函数;2.提供函数实现的一方,将回调函数的函数指针注册给调运者;3.当特定的事件或条件发生的时候,调运者使用函数指针调运回调函数对事件进行处理。原创 2017-07-13 00:14:30 · 498 阅读 · 0 评论 -
gravity与layout_gravity
grayvity与layout_gravity都是android的属性都用来调整控件或者字体内容的位置,其中:1.android:gravity 属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个. 2.android:layout_gravity是用来设置该view相对与起父view 的位置.比如一原创 2017-07-29 14:57:41 · 291 阅读 · 0 评论 -
padding与margin的区别
margin在边界手册上叫外补丁,padding是填充内补丁,在他们之间有一个边界border。padding包围的就是content,那么这个盒子是不是就是最外层的div,按照从外到内,margin,border,padding,content?这个margin是不是和border的距离?二,比如说最外层height:800px;width:800px;margin:1px 1px 1px原创 2017-07-29 15:05:56 · 277 阅读 · 0 评论 -
getApplicationContext,context,this的区别
getApplicationContext 返回的是context.this代表当前的activity继承的事context,(父类中有的方法子类中一定有,子类中有的方法父类中不一定有)。在使用getApplicationContext中一定可以使用activity.this,但在使用activity.this时是不一定可以使用getApplicationContext。原创 2017-07-29 15:07:00 · 295 阅读 · 0 评论 -
android的工程目录及相关知识
1.SDK的目录结构* add-ons>附加组件,放在一个额外的工具。google api,提供google地图的jar包* build-tools>编译工具,谷歌sdk升级后采用的目录* docs>文档目录。开发文档。* extras >附加工具 support 文件夹,提供向下兼容的jar包。>和额外的驱动,摄像头驱动,手机驱动* platform原创 2017-07-29 15:07:53 · 250 阅读 · 0 评论 -
Android中的mvc概念
activity是安卓中的界面也是用户的友好交互界面,而activity中的的数据展示也是在activity中,器数据来自adapter,业务处理的数据放在adapter力变,然后adapter再将数据传递给activity.其中业务处理的数据来自db或者.db.dao。这个流程就称作Android中的mvc模式。简单来说,activity中的控件(如listview)作为view,adapt原创 2017-07-29 15:09:00 · 360 阅读 · 0 评论 -
Android内存中创建原图的副本
// 1.得到原图;// 根据图片的资源ID得到图片对象Bitmap srcPic = BitmapFactory.decodeResource(getResources(),R.drawable.meinv);// 2.参考原图创建一个空白纸张;// 根据指定的宽,高,配置信息创建图片对象Bitmap copyPic = Bitmap.createBitmap(srcPi原创 2017-07-29 15:32:48 · 275 阅读 · 0 评论 -
设计模式的六大基本原则:
1.开闭原则:开闭原则就是说对扩展开放,对修改关闭,在程序需要进行扩展的时候,不能去修改原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。2.里氏替换原则:里氏替换原则是面向对象设计的基本原则之一。里氏替换原则说,任何基类出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单原创 2017-07-21 22:36:43 · 3189 阅读 · 0 评论 -
android网络编程
网络编程涉及的内容有:文本,图片,音频,视频。网络编程的步骤:1.创建url对象,打开一个HTTP类型的链接;2.设置连接的请求参数,请求方式,链接的超时时间;3.判断响应码是否为200,然后接收服务器端返回的二进制输入流;4.在清单文件中添加访问网络的权限package cn.itcast.viewpic;import java.io.InputStr原创 2017-07-23 13:01:13 · 183 阅读 · 0 评论 -
Handler的使用原理及方法
Android中handler主要用于子线程给主线程发送消息时使用,他的使用原理是:所有的ui界面的操作系统,后台都运行着一个死循环(looper),这个死循环不停的监听和接收用户发送的指令,一旦接收到指令就立即执行;android应用程序在一启动的时候,系统就会给他提供一个looper(死循环),这个looper是运行在主线程中的。当过子线程需要修改UI界面是,就会用handler的sendMe原创 2017-07-24 18:13:20 · 338 阅读 · 0 评论 -
网络请求方式GET与POST的区别
FORM中的get post方法区别Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。2、 Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用 “&”连接;原创 2017-07-26 14:32:58 · 477 阅读 · 0 评论 -
android中的AIDL
aidl:Android Interface Defination Language 安卓的接口定义语言;aidl格式的文件是一个对外开放的可以共享的文件,可以把它拷贝其他工程中使用; IPC Inter process communication 进程间的通讯;Stub 远程服务的代理对象:远程服务:同一个设备上的另一个软件中的服务组件;本地应用:自己当前的应用程原创 2017-07-27 14:04:17 · 142 阅读 · 0 评论 -
start开启服务的生命周期
生命周期方法: 1.onCreate:在服务对象创建后调用这个方法,初始化服务对象; 2.onStartCommand:开启服务后调用这个方法; 3.onDestroy:在服务对象被销毁之前调用这个方法,通常在这个方法中做一些扫尾工作,比如保存数据; 特点: 1.第一次开启服务时,先创建服务对象,然后再开启:调用的方法onCreate,onS原创 2017-07-27 14:13:12 · 623 阅读 · 0 评论 -
bind开启服务的生命周期
特点:1.第一次绑定服务时,先创建服务对象,再绑定,调用的方法onCreate,onBind;2.解除绑定的服务时先解除绑定的服务,然后销毁服务对象;3.服务只能被绑定一次;4.服务只能被解除一次,多次解除会抛出异常;5.当前界面关闭时会解除绑定的服务,销毁服务对象; 推荐的混合方式:(既能让服务长期运行在后台又能够调用服务中的业务方法)1.startSer原创 2017-07-27 14:14:36 · 764 阅读 · 0 评论 -
Android面试
一、activity1、activity作用2、activity生命周期3、activity四种启动模式4、activity启动流程5、如何加速启动actviity二、fragment1、fragment作用2、fragment生命周期三、service1、service作用2、service的两种启动方式和生命周期3、service与activity的两种通信方式四、C...转载 2019-09-19 22:15:17 · 168 阅读 · 0 评论