android基础
小洋人最happy
梦想,源自坚持
展开
-
关于ADB server didn't ACK的问题
问题:今天在开ADT之前,用电脑连接了一下小米手机,右下角QQ提示android设备接入成功,金山卫士也提示android设备接入成功,然后我又打开小米自带的小米手机助手,使用他的无线共享功能,再然后悲剧的事情发生了,当打开ADT,启动模拟器后,运行android程序,控制台报错了,如下: ADB server didn't ACK * failed to start d原创 2013-12-11 10:14:29 · 1443 阅读 · 0 评论 -
android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
2.1.1 AndroidManifest.xml设置在中Menifest中添加子元素android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载d原创 2015-10-08 11:09:18 · 463 阅读 · 0 评论 -
详解Android中Service组件(一)
Service是android四大组件之一。 1. Android提供service类来专门创建处理长生命周期的应用程序组件以及不需要用户界面的功能。 2. Android赋予service比处于非活动状态的Activity更高的优先级。和Activity BroadcastReceiver一样,运行在主线程 3. Service主要用于执行Intent查找 处理数据 更新ContentProvider 激活Intent以及触发Notication等。 4. Service的优先级比较高,通常情况下原创 2015-11-09 18:16:57 · 533 阅读 · 0 评论 -
Android网络请求库对比之HttpUrlConnection和HttpClient
最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient。原创 2015-10-27 13:16:41 · 1018 阅读 · 0 评论 -
IPC机制---01简介
ipc是intel process communication的简称,含义为进程间通讯或跨进程通信,指两个进程之间进行数据交换的过程。线程是cpu调度的最小单元,也是一种有限的系统资源。进程一般指一个执行单元,在pc和移动设备上指一个应用或一个程序。一个进程可以包含多个线程,进程与线程是包含与被包含的关系。最简单的应用case就是一个应用只有一个线程,也就是主线程,UI线程,在UI线程执行一些UI操作,不能进行耗时等网络操作,否则会造成ANR报错。IPC机制不是android特有的,在windows原创 2016-01-24 21:42:41 · 442 阅读 · 0 评论 -
IPC机制---02 Android中的多进程模式
通过给四大组件在mainest.xml中增加android:process属性,可以轻松的开启多进程模式,但是这样也是暗藏杀机的。开启多进程模式正常情况下,android中多进程是指一个应用存在多个进程的情况,因此暂时忽略两个应用之间的通讯问题。正常情况下,在一个应用中开启多进程只有上述说到的一个方法,也就是说我们无法给一个线程或实体类开启一个单独的进程。此外,还有一种非常规方法,通过JNI在native层fork一个进程。原创 2016-01-24 21:46:56 · 532 阅读 · 0 评论 -
IPC机制---03 IPC基础概念介绍
IPC基础概念包括三部分:Serializable Parcelable和Binder。前两者为序列号和反序列化接口,可以完成对象的序列化,通过Intent或Binder进行对象数据传递时,或将对象持久到设备上或通过网络传输给其他客户端时,需要实现这两个接口中的一个。原创 2016-01-26 14:06:15 · 967 阅读 · 0 评论 -
IPC机制---04 Android中的IPC通讯方式(B)
上一篇已经介绍了进程间通讯的几种方式,并且着重说明了Messenger的方式。简单说一下Messenger的优缺点吧。底层基于AIDL,系统为我们做了封装,使用简单方便以串行的方式处理客户端发过来的数据,如果大量的消息同时发送到服务端,也只能一个个处理,并发量大的话,Messenger就不太合适了Messenger作用主要是为了传递数据,如果要跨进程调用服务端的方法,就无法做到了下面介绍一下使用AIDL进行跨进程通信的方法服务端创建一个Service用来监听客户端的连接请求,然后创建一个AIDL原创 2016-03-09 11:26:14 · 412 阅读 · 0 评论 -
IPC机制---04 Android中的IPC通讯方式(A)
使用BundleAndroid四大组件中的三大组件(Activity Service Receiver)都支持在intent中传递Bundle数据,Bunder实现了Parcelable接口,所以它方便在不同的进程间传输。当我们在一个进程中启动了另一个进程的Activity Service Receiver,我们就可以在Bundle中附近我们需要传输的数据,并通过Intent发送出去,当然,数据必须能够被序列化。使用文件共享文件共享是一种不错的线程间通讯方式,两个进程通过读写同一个文件来实现数据共享原创 2016-01-31 22:51:11 · 464 阅读 · 0 评论 -
IPC机制---04 Android中的IPC通讯方式(C)
上一篇中,在服务端的BookService中使用的是ArrayList,这是一个线程不安全的集合,因为AIDL的方法是在Binder的线程池中执行的,因此当多个客户端同时连接的时候,会存在多个线程同时访问的情况,所以我们要在AIDL方法中处理线程同步,下面使用一个新的集合类来代替它--CopyOnWriteArrayList原创 2016-03-10 11:12:41 · 548 阅读 · 0 评论 -
IPC机制---04 Android中的IPC通讯方式(D)
上一篇中提到,在对我们客户端进行解绑监听的时候,并没有成功,服务端打印出not found listener的log,而我们客户端在进行绑定和解绑的时候传递的listener明明是同一个,为什么会出现这种情况呢?其实这是必然的,这种解注册的处理方式在我们平时的开发中经常使用到,但是放在多进程中却是失效的,因为Binder会把客户端传递过来的对象重新转化并生成一个新的对象。虽然我们解绑和绑定传递的是同一个对象,但是通过Binderde转换已经是两个全新的对象了。因为对象是不能跨进程直接传输的,对象的跨进程传输原创 2016-03-11 11:55:30 · 569 阅读 · 0 评论 -
IPC机制---04 Android中的IPC通讯方式(E)
下面介绍一种IPC通讯的另外一种方式ContentProvider,这是Android中提供的专门用于不同应用间进行数据数据共享的方式。和Messenger一样,底层也是基于Binder的,但是,系统已经为我们做了封装,所以使用起来比AIDL简单多了。系统内置了许多ContentProvider,比如通讯录 短信信息等,要跨进程通信,只需要通过ContentResolver的query update insert和delete方法即可。下面创建一个BookProvider,继承自ContentProvi原创 2016-03-14 11:49:08 · 511 阅读 · 0 评论 -
Android 8.1(Oreo)新特性
Android 8.1的主要新功能点有: 1、神经网络API(NNAPI),提供机器学习的硬件加速。 2、通知:通知消息现在每秒仅能发出一次提示音。 3、改善2G以下内存设备的表现 4、自动填充功能针对APP进行优化,提供验证器判断是否响应 5、文本编辑更新 6、程序性的安全浏览行为:允许APP对浏览行为进行安全检测、规避威胁 7、视频缩略图生成更精准 8、共享内存...原创 2018-04-19 15:58:44 · 934 阅读 · 0 评论 -
谷歌Android 9 Pie介绍及新功能
今天凌晨,谷歌毫无征兆地对外发布了安卓9.0系统的正式版,目前Google Pixel系列手机已经可以接收到推送。此外,系统更新提示也提到,安卓9.0系统的官方正式命名为Android 9.0 “Pie”,也就是此前传言的馅饼。 当然谷歌采用这一甜品的名字来命名安卓9.0也不算很奇怪,此前有关安卓9.0系统的活动就是在3月14日举行,而3月14日正是有名的“Pie”(圆周率)纪念日。至此有关...原创 2018-08-08 19:18:37 · 2084 阅读 · 0 评论 -
获取Android手机总内存和可用内存最佳方案
Android手机的内存大小信息存放在手机系统的/proc/meminfo文件中,可以通过读取这个文件来获取内存信息。 adb shell查看通过adb shell命令,进入终端adb shell 执行cat /proc/meminfo,查看内存信息,命令如下:cat /proc/meminfo输出信息为:MemTotal: 5788180 k...原创 2018-09-11 18:29:16 · 8544 阅读 · 4 评论 -
Android实战之音量获取与设置
获取和设置安卓音量信息主要使用了到AudioManager,通过getSystemService拿到AudioManager,然后就可以使用其提供的API轻松完成音量值的获取和设置了。获取各类别音量最大值与当前值 fun getVoiceInfo(view: View) { val audioManager = getSystemService(Context.AUD...原创 2018-10-22 14:40:18 · 3577 阅读 · 0 评论 -
Android SDK下载和更新失败的解决方法
使用sdk manager更新sdk等时可能会发现在更新的过程中出现如下错误信息:Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xmlFetched Add-ons List successfullyFetching URL: https://dl-ssl.google.com/android/repository/repository-8.xmlDone loading packages.Fetching原创 2015-06-15 14:15:41 · 1271 阅读 · 0 评论 -
Android中canvas.save()和canvas.restore()的使用
自定义控件时常常遇到重写View的Ondraw()方法,Ondraw()方法常常设计到save()和restore()这两个方法.这两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。具体作用如下: 1.save():用来保存Canvas的状态,save()方法之后的代码,可以调用Canvas的平移、放缩、旋转、裁剪等操作!原创 2015-06-05 10:44:36 · 1203 阅读 · 1 评论 -
Android中shape的基本使用
shape用于设定形状,可以在selector,layout等里面使用,点击效果神马的我们可以不需要UI的切图,自己直接使用shape搞定,比较方便快捷。 新建一个shape.xml默认为矩形,可以通过android:shape=""来设置具体的形状,有这么四种:rectangle 矩形,oval 椭圆形,line 线,ring 环形。原创 2015-06-03 14:17:12 · 788 阅读 · 0 评论 -
android快捷方式图标的创建
1.Launcher为了让其他应用程序能够创建自己的快捷图标,就注册了一个BroadcastReceiver,专门接受其他应用程序发来的快捷图标创建信息。因此,我们只需要根据该broadcastReceiver构造出对应的Intent并装入我们的图标定制信息,最后调用sendBroadcat方法就可以创建一个快捷图标了。 2.首先查看一下android源码,在Launcher的An原创 2013-12-11 14:31:33 · 1915 阅读 · 0 评论 -
Android基础之Notification的简介及使用
1.简介 Notification是应用程序提醒用户发生某些事件的一种方式,比如当某些特定的、要求用户注意的事件发生时,应用程序就应该提醒用户。 通知是由Notification Manager进行处理的,包括一下内容: 显示状态栏图标 LED闪烁 手机震动 发出声音提醒 在通知栏显示额外的信息 Notification是由那些不原创 2013-12-04 13:13:51 · 2067 阅读 · 0 评论 -
自定义CrashHandler捕获全局未处理异常
问题: 在我们实际开发中,很多时候有些程序的异常并没有完全进行捕捉处理,如果程序执行到报错的代码时,程序就会强行停止,force close,并且界面对用户来说是不友好的。因此,我们需要重新写自己的CrashHandler去实现系统的UncaughtExceptionHandler,用它来处理我们未捕获的异常信息,并且可以将信息收集,上传到服务器供我们参考。原创 2013-12-12 10:30:14 · 3666 阅读 · 0 评论 -
使用AsyncTask运行异步任务
1.AsyncTask类为耗时的操作移到后台线程并在操作完成后同步更新UI线程提供了最佳实践模式。它有助于将事件处理程序与GUI线程进行同步,允许更新视图和其他UI元素来报告进度,或者在任务完成后发布结果。a.创建新的异步任务 //异步任务 三个参数:输入 进度报告 结果值的参数类型 new AsyncTask() { /** * 首先会调用的方法原创 2013-12-18 15:44:10 · 1092 阅读 · 0 评论 -
通过反射和AIDI获取应用程序大小
有的时候我们需要获取应该的大小或者应用的缓存信息,但是查看android API发现,并没有给我们提供这样的方法去操作。闲来无事,查看android的源代码发现,其实内部有这样的方法,只不过隐藏起来了,下面就绕过看源码的过程,直接说一下如何去使用和获取吧。 1.首先,我们需要把android.content.pm.IPackageStatsObserver.aidl和android.co原创 2013-12-19 13:04:26 · 1118 阅读 · 0 评论 -
IntentService和Service的比较
首先IntentService是继承自Service的,那我们先看看Service的官方介绍,这里列出两点比较重要的地方: 1.A Service is not a separate process. The Service object itself does not imply it is running in its own process; unless otherwise speci原创 2013-12-20 15:24:11 · 813 阅读 · 0 评论 -
android下MediaPlayer的使用
在开发中,有时候我们可能会用到一些多媒体操作的一些功能。下面,简单介绍一下mediaPlayer的使用.市面上很多音乐播放器之类,个人觉得应该是在service中去开启mediaPlayer的,因为生命周期的问题,这个在这就不阐述了,下面就以一个案例的形式介绍一下常见的操作和使用。 1.首先,我们把界面做成这样,简单易懂 2.具体mediaPlayer开启创建以原创 2013-12-24 14:24:09 · 1205 阅读 · 0 评论 -
SoundPool的简单使用
一般在玩游戏的时候,特别是在射击游戏中,经常会出现“***”(此处省去500字,大家懂得)的声音,听起来好多声音连发的效果。其实实现起来是不难的,都知道,在Java中有线程池的概念,那么,类似的,在android中,也存在soundPool的概念。 下面简单实现,说一下soundpool的基本用法。 1.界面,如下,就一个"射击"按钮,当点击射击时,不是单纯的使用一种声音原创 2013-12-24 16:08:03 · 897 阅读 · 0 评论 -
解决Android SDK Manager在Win8系统下闪退问题
1.在android-sdk\tools的目录下寻找android.bat,右键选择编辑2.找到android.bat文件中的下面字段并进行修改rem Check we have a valid Java.exe in the path.set java_exe=call lib\find_java.batif not defined java_exe goto :EO原创 2014-07-05 14:36:54 · 1278 阅读 · 0 评论 -
Android中Intent详解(一)
Intent是一种消息传递机制,它可以在应用程序内使用,也可以在应用程序间使用,主要用途分为: 1.使用类名显示的启动一个特定的Activity或Service 2.启动Activity或Service来执行一个动作的Intent,通常需要使用特定的数据,或者对特定的数据执行动作 3.广播某个事件已经发生原创 2014-10-29 11:54:25 · 1408 阅读 · 0 评论 -
Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介
通过第一篇的讲解,我们已经看到了如何使用Intent来启动新的应用程序组件,但是实际上他们也可以使用sendBroadcast方法来在组件间匿名的广播消息。作为一个系统级别的消息传递机制,Intent可以在进程之间发送结构化的消息。因此,通过实现Broadcast Receiver来监听和响应应用程序内的这些Broadcast Intent。通过使用Intent来广播一个事件,可以在不修改原始的应用程序的情况下,让我们开发人员对事件做出反应。Android大量使用了Broadcast Receiver来原创 2014-10-31 11:48:04 · 4910 阅读 · 0 评论 -
高仿快递100--实战之RadioGroup和RadioButton应用
1RadioButton和CheckBox的区别:1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox原创 2014-11-07 09:36:12 · 1729 阅读 · 3 评论 -
关于新版ADT每次创建项目都出现appcompat_v7的问题
做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容,而且项目会报错。这到底是怎么回事呢?原来appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本 的界面。下面简单说几种解决方案吧!1.删除appcompat_v7包删除appcompat_v7包后,项目各种原创 2015-05-15 14:04:23 · 930 阅读 · 0 评论 -
Listview的onItemClickListener无法响应的解决方法
有时会碰到ListView的onItemClickListener事件无法响应,主要原因:listview的子元素中包含了Button或者ImageButton之类的元素,button的优先级高于listview 所以不能监听item的点击事件。解决方法:在item 的根节点加入 “ android:descendantFocusability="blocksDescendants" 即可。原创 2015-05-26 16:48:15 · 776 阅读 · 0 评论 -
Java枚举介绍及使用详解
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。在java中如何更好的使用这些“数据集”呢?在jdk1.5之前我们或许会这样写:static class Grade { private Grade() { } public原创 2015-06-17 10:34:25 · 727 阅读 · 0 评论 -
Android报错之.android/repositories.cfg could not be loaded.解决方案
问题引入执行如下命令时/Users/***/Android/sdk/tools/bin/sdkmanager --update报错如下:arning: File /Users/***/.android/repositories.cfg could not be loaded.解决方案提示缺少repositories.cfg文件,那么创建一个就好喽。touch /Users/***...原创 2018-12-05 18:16:17 · 34419 阅读 · 5 评论