
Android常见问题
speedboy007
我们是一个充满活力激情的团队,拥有5年以上的移动互联网开发经验,专注于移动手机开发iOS,Android开发和产品设计,帮助客户设计UI,UE和开发产品,高质量的代码和文档,优秀的UI设计和体验
展开
-
用Gradle 构建你的android程序
http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html前言android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的人也用gr转载 2014-09-20 22:31:04 · 969 阅读 · 0 评论 -
Handler 引起的内存泄露
在编写程序时,一般调用API获取服务器数据时,我们都是采取线程来操作的,这里面就需要用到Handler了,但是需要我们注意的是Handler很可能引起内存的泄露。AD:先看一组简单的代码public class SampleActivity extends Activity { private final Handler mHandler = ne转载 2015-07-17 14:56:59 · 518 阅读 · 0 评论 -
美团Android自动化之旅—适配渠道包
http://tech.meituan.com/mt-apk-adaptation.html概述前一篇文章(美团Android自动化之旅—生成渠道包)介绍了Android中几种生成渠道包的方式,基本解决了打包慢的问题。但是,随着渠道越来越多,不同渠道对应用的要求也不尽相同。例如,有的渠道要求美团客户端的应用名为美团,有的渠道要求应用名为美团团购。又比如,有些渠道要求应用不能转载 2015-08-11 15:39:30 · 1297 阅读 · 1 评论 -
Android项目中如何用好构建神器Gradle?
http://www.youkuaiyun.com/article/2015-08-10/2825420/2http://blog.isming.me/2015/03/18/android-build-speed-up/转载 2015-08-11 15:58:06 · 515 阅读 · 0 评论 -
findViewById返回Null
10-04 17:43:05.400: E/AndroidRuntime(7135): Caused by: java.lang.NullPointerException10-04 17:43:05.400: E/AndroidRuntime(7135): at com.solar.LoginActivity.initView(LoginActivity.java:35)10-04 17:转载 2015-07-27 15:49:33 · 484 阅读 · 0 评论 -
[Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法。在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。分别存储位置:*.jar:库/build/intermediates/bundles/debug(release)/classes.jar*.aar:库/build/outputs/aar转载 2015-08-11 17:41:01 · 955 阅读 · 0 评论 -
Activity启动模式 及 Intent Flags 与 栈 的关联分析
在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的。 Intent主要用于2种情景下:(1)发起意图 (2)广播 它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行Inten转载 2015-08-11 14:57:37 · 513 阅读 · 0 评论 -
多个AsynceTask无法同时运行的现象分析
问题关于这篇博客所提到的问题是在一段再简单不过的代码中意外出现的。当时我使用了两个不同'AsyncTask'帮助我执行两个需要在后台执行任务。并且这两个'AsyncTask'几乎是同时运行的。原本会正常运行的代码,却不知道为什么出现了问题。总是有一个'AsyncTask'会迟迟不做出反应。看起来就好像多个'AsyncTask'不能同时执行任务。最糟糕的是,如果这两个'AsyncTask'的转载 2015-07-27 17:20:20 · 1822 阅读 · 0 评论 -
CountDownLatch的介绍和使用
1、类介绍2、使用场景3、方法说明4、相关实例1、类介绍java.util.concurrent类 CountDownLatchjava.lang.Objectjava.util.concurrent.CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 Count转载 2015-08-12 19:13:59 · 978 阅读 · 0 评论 -
Android官方技术文档翻译——ApplicationId 与 PackageName
本文译自androd官方技术文档《ApplicationId versus PackageName》,原文地址:http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename。本文地址:http://blog.youkuaiyun.com/maosidiaoxian/article/details转载 2015-08-12 16:37:19 · 569 阅读 · 0 评论 -
正确处理listview的position
当ListView包含有HeaderView或FooterView时,传入getView或者onItemClick的position是怎样的,这是个值得探讨的问题先列出错误的用法定义:private MyAdapter mAdapter; /** * 包含数据的list */ private List mDataList1 = new ArrayList();转载 2015-07-16 10:27:41 · 9740 阅读 · 2 评论 -
android通用的UUID唯一标示符
http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id原创 2015-08-07 17:37:18 · 1242 阅读 · 0 评论 -
ListView / GirdView Adpater的getView方法,首项多次调用
通过Adapter为AbslistView提供内容是一个常见的做法:在ListView或者GridView的Adapter中的getView()方法中,加入一行日志,看getView()被调用的情况public View getView(int position, View convertView, ViewGroup parent) { Log.d('cube_list',转载 2015-05-18 14:22:57 · 984 阅读 · 0 评论 -
从零开始学习Gradle之三---多项目构建
随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者maven的继承的方式定义子项目,也提供了一种更为方便的集中配置的方式,大大减少了构建带来的复杂度。除此之外,Gradle还提供了清晰的Project树模型来映射多项目的组织结构。下面,让我们了解一下转载 2014-09-21 18:01:11 · 8089 阅读 · 1 评论 -
Gradle 构建 android 应用常见问题解决指南
http://www.cnblogs.com/youxilua/p/3348162.htmlandroid gradle 插件已经发展到0.5.7,同时gradle 本身也到了1.8,相比两个月前,android gradle 更快,更完善,也更好用了,为了让各位androider 早日用上gradle这样的神器,特地写一篇关于gradle一些奇葩错误的解决指南.使用最新的转载 2014-09-21 18:45:04 · 967 阅读 · 0 评论 -
Java中String.getBytes()
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不通OS下,返回的东西不一样! String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如 byte[] b_gbk = "中".getBytes("GBK"); byte[] b_utf8转载 2014-08-15 12:18:16 · 827 阅读 · 0 评论 -
Android 之Activity启动模式(二)之 Intent的Flag属性
首页博客链接关于我留言板前面介绍了通过launchMode设置Activity的启动模式。本章接着介绍Activity的启动模式相关内容,讲解的内容是Intent与启动模式相关的Flag,以及android:taskAffinity的属性。目录1. Intent与启动模式相关的Flag简介2. 1. FLAG_ACTIVITY_NEW_TASK标签测试3. 2.转载 2015-05-08 17:02:36 · 1059 阅读 · 0 评论 -
android中的Section ListView
前几天,和ios开发的同事扯淡时发现iphone里有个section listview,分章节的列表。android中的联系人也有这种效果,首字母相同的联系人会被分在一个章节中。后来搜了一下,android做起来也很easy。下面记录一下方便以后参考(大家改一下包名)首先复写一下BaseAdapter:[java] view plaincopy转载 2015-05-11 14:47:44 · 857 阅读 · 0 评论 -
ListView中的Item不能点击的解决方法
有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等)。但是,这样会出现一个问题:当同时设置了Button的onClick及ListView的onItemClickListener时,ListView的onItemClickListener会失去作用,即ListView不响应Item的点击事件。转载 2015-05-13 20:12:13 · 1557 阅读 · 0 评论 -
StrictMode 详解
StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题。比如,如果你在UI线程中进行了网络或者磁盘操作,StrictMode就会通过Log(logcat )或者对话框的方式把信息提示给你,因为让你的UI线程处理这里操作会被认为是不规范的做法,可能会让你的应用变得比较卡顿。官网文档:http://developer.an转载 2015-05-15 16:44:32 · 22214 阅读 · 2 评论 -
Android中View大小的确定过程
View and ViewGroup安卓中有5种基本的 ViewGroup:FrameLayoutRelativeLayoutLinearLayoutTableLayoutAbsoluteLayoutViewGroup可以添加子View,在xml文件里面,我们可以这样写: android:layout_width="match_paren转载 2015-05-18 14:06:29 · 795 阅读 · 0 评论 -
instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系
编程的时候可能会遇到一个不知道它属于哪个类的对象,我们可以用下列运算符或者方法来判断。 instanceof是运算符只被用于对象引用变量,检查左边的被测试对象是不是右边类或接口的实例化。如果被测对象是null值,则测试结果总是false。 String str = new String("测试"); System.out.println(str instanceof String); //输出转载 2015-05-18 15:26:24 · 1375 阅读 · 0 评论 -
使用Android studio分析内存泄露
http://www.jianshu.com/p/c49f778e7acf转载 2015-08-03 16:25:49 · 1445 阅读 · 0 评论 -
ReentrantLock可重入锁的使用场景
摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用转载 2015-08-03 18:59:31 · 492 阅读 · 0 评论 -
Android如何正确的保存文件
在Android 官方开发文档中有一篇文档来介绍如何保存应用的数据,但笔者用过很多程序(从知名的到不知名的)处理的都不是很完美,或者 没有按照Android 开发团队建议的方式去保存他们应用的数据。当一些试用过的软件卸载后,在SDCard中还保留了这些软件的文件目录,时间一长就有很多目录需要手工去清理,并且很难确认那些目录是仍然在使用的 那些目录已经没用了,给用户带来困扰。这里我们来讨论下该如转载 2015-09-17 20:02:40 · 875 阅读 · 0 评论 -
android打包so文件到apk
在apk里打包进.so文件的方法有两种方法,1 是在Android.mk文件里增加LOCAL_JNI_SHARED_LIBRARIES := libxxx这样在编译的时候,NDK自动会把这个libxxx打包进apk;放在youapk/lib/目录下。2 是在应用的目录下手工建libs/armeabi目录,然后把libxxx.so拷贝到这个目录下,这样NDK就转载 2015-09-17 20:18:11 · 1019 阅读 · 0 评论 -
从AndroidStudio的启动参数开始,了解一下JVM的一些东西(内存使用,JIT等)
从ANDROIDSTUDIO的启动参数了解到的下JVM的一些东西(内存使用,JIT等)如果你使用AndroidStudio经常觉得很卡,那有可能是因为系统给AS分配的内存不够的原因。打开/Applications/Android Studio.app/Contents/bin/studio.vmoptions (Mac),可以看到有以下配置:-Xms128m -Xmx750m转载 2015-10-22 17:24:02 · 3169 阅读 · 0 评论 -
Adapter优化方案的探索
概要:使用Adapter的注意事项与优化方案本文的例子都可以在结尾处的示例代码连接中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文的示例代码主要是基于CommonAdapter这个库编写的,若你有其他的技巧和方法可以参与进来一起完善这篇文章。固定连接:https://github.com/tianzhijiexi转载 2015-10-27 11:59:23 · 2967 阅读 · 0 评论 -
在 KitKat以上版本中使用Translucent将Navigation Bar透明化
Android 从 4.4(KitKat) 开始提供了一个视觉上的提升,让最上方的状态栏 (Status Bar) 以及最下方的导航栏 (Navigation Bar) 可以被透明化,并让 APP 的内容可以往上下延伸,使整个画面的可被利用度大幅提升。从 3.0 (honeycomb) 开始,Navigation Bar采用虚拟键,一直都占据一块不小的空间,对很多人来说,整个屏幕无转载 2015-10-27 15:49:35 · 2929 阅读 · 0 评论 -
Gradle系列教程之依赖管理
这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库。依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依赖一个库的多个版本。Gradle通过分析依赖树得到依赖报告,你将很容易找到一个指定的依赖的来源。Gradle有自己的依赖管理实现,除了支持ant和Maven的特性外,Gradle关心的是性能、可靠性和复用性。简要概述依赖转载 2015-10-14 17:51:14 · 745 阅读 · 2 评论 -
android中xml tools属性详解
第一部分安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果。但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text。因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性1234转载 2015-10-16 11:01:15 · 6940 阅读 · 3 评论 -
Android内存泄漏研究
概念根搜索算法Android虚拟机的垃圾回收采用的是根搜索算法。GC会从根节点(GC Roots)开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收掉。根搜索算法相比引用计数法很好的解决了循环引用的问题。举个例子,Activity有View的引用,View也有Activity的引用,之前我还尝试去源代码里找Activity何时和转载 2015-10-15 19:05:00 · 2253 阅读 · 0 评论 -
Gradle入门系列
http://blog.jobbole.com/71999/原创 2015-09-17 10:16:01 · 685 阅读 · 0 评论 -
System.currentTimeMillis() uptimeMillis elapsedRealtime 区别
System.currentTimeMillis() 系统时间,也就是日期时间,可以被系统设置修改,然后值就会发生跳变。uptimeMillis 自开机后,经过的时间,不包括深度睡眠的时间elapsedRealtime自开机后,经过的时间,包括深度睡眠的时间所以System.currentTimeMillis()不适合计算时间间隔,eg,now = System.cu转载 2015-10-19 11:41:46 · 1645 阅读 · 0 评论 -
React Native For Android 架构初探
QQ空间终端开发团队Facebook 在2015.9.15发布了 React Native for Android,把JavaScript 开发技术扩展到了Android平台。React Native 让开发者使用 JavaScript 和 React 编写应用,利用相同的核心代码就可以创建 基于Web,iOS 和 Android 平台的原生应用。本文将浅析Andr转载 2015-10-19 09:48:24 · 5289 阅读 · 1 评论 -
Android Handler消息处理顺序分析
看到Handler中的消息处理函数:Java代码 public void dispatchMessage(Message msg){...} 这个函数是在Looper的执行消息循环loop()的时候取出Message然后执行: Java代码 msg.target.dispatchMessage(msg);转载 2015-08-03 18:51:00 · 5040 阅读 · 1 评论 -
Android 事件分发机制详解
http://stackvoid.com/details-dispatch-onTouch-Event-in-Android/转载 2015-08-17 19:27:39 · 584 阅读 · 0 评论 -
Java类的变量初始化顺序
大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解。 我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量转载 2015-08-05 12:14:11 · 2242 阅读 · 1 评论 -
Activity跳转Flag详解
http://peirenlei.iteye.com/blog/1717716转载 2015-08-18 21:10:00 · 533 阅读 · 0 评论 -
LeakCanary: 让内存泄露无所遁形
文章:http://www.jianshu.com/p/7db231163168github:https://github.com/square/leakcanary转载 2015-08-06 16:40:45 · 736 阅读 · 0 评论