摘要:最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP。下面介绍使用方法: 首先要构建两个APP需要有两个APP图标、APP名字和AndroidManifest.xml。Andr
阅读全文
摘要:类图关系 在看Android的窗口机制之前,先看看其主要的类图关系以及层级之间的依赖与调用关系 1.window在当前的android系统的中的呈现形式是PhoneWindow (frameworks/base/policy/src/com/android/internal/policy/impl/
阅读全文
摘要:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。所有View的子类成为”Widget”,所有ViewGroup的子类成为”Layout”。View和ViewGroup之间采用了组合设计模式。ViewGroup作为布局容器类的最上层,布局容器里面又可以有View和Vi
阅读全文
摘要:JSON常用与服务器进行数据交互,JSON中“{}”表示JSONObject,“[]”表示JSONArray 如下json数据: 生成json数据代码: 解析json数据代码:
阅读全文
摘要:通常我们在处理耗时任务时候都会通过新建线程来处理,当任务处理完后通过Handler将结果发送回主线程。比如下面示例: 那么,我们能不能通过Handler从主线程发送消息给子线程呢?答案是肯定的,需要用到Looper.prepare()和Looper.loop()。如下面的代码:
阅读全文
摘要:什么时候需要 Looper Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,使用Looper.prepare()
阅读全文
摘要:在实际的Android开发过程中,我们遇到了一些奇奇怪怪的Crash,通过sigaction再配合libcorkscrew以及一些第三方的Crash Reporter都捕获不到发生Crash的具体信息,十分头疼。然后我们通过Bugly上报的Java的CallStack观察发现这些Crash发现了一些
阅读全文
摘要:上面这段代码在handler对象创建的时候却会报警告:This Handler class should be static or leaks might occur。意思是:Handler 类应该为static类型,否则可能会造成内存泄漏。 为什么会造成这种情况呢? 这种情况就是由于android
阅读全文
摘要:在实际工作中,经常遇到客户需要用代码设置系统时间的需求,但是Android非系统应用是无法设置系统时间的。于是,我设计了一个使用系统签名的时间设置服务,客户通过bind调用服务里的方法就能达到设置时间的目的。 这里用到的技术有: 1、Signapk签名 2、AIDL 3、bind service 将
阅读全文
摘要:JitPack的地址为:https://jitpack.io/ 发布 使用 点击 Get it. 之后网页就会自动导航到下面那一栏,按照里面的两个顺序依次填写就可以完成。是不是很简单? 注意: 1. 上传到github的版本需要有一个Release,设置Tag 2. 如果出现”Dependency
阅读全文
摘要:在Android 4.4系统中,外置存储卡(SD卡)被称为二级外部存储设备(secondary storage),应用程序已无法往外置存储卡(SD卡)写入数据,并且WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储(primary storage)授予写权限,对于其他外部存储,其上
阅读全文
摘要:一.一般Android应用程序架构(Book,购彩,Market)。 普通的应用程序由于只需要用到Android的联网与显示的功能,所以应用程序大体上是呈现为UI(Activities)与网络(Network)等其他模块进行绑定,数据交互的应用程序。 优点: (1)此种是一种通用的类J2ME的应用开
阅读全文
摘要:开发工具的选择 开发工具我将选用Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3的预览版也已经发布了。Android Studio的优点就不需多说了,GitHub上大部分的Android开源库也都已迁移到Android Studio上来,
阅读全文
摘要:在实际开发中可能需要用到两个Service相互监视的情况,本示例就是实现此功能以作参考。 服务B: IBridgeInterface.aidl 界面: AndroidManifest.xml 由于涉及到跨进程,onServiceConnected() 方法中使用 而不能直接类型转换 onStartC
阅读全文
摘要:Android启动Service有两种方法,一种是startService,一种是bindService。生命周期如下: 执行startService时,调用者如果没有stopService,Service会一直在后台运行。多次调用startService,该Service只能被创建一次,即该Ser
阅读全文
摘要:原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/48371123 http://inthecheesefactory.com/blog/things-you-n
阅读全文
摘要:Java中提供了两种方法来执行程序或脚本: (1) 使用Runtime的exec()方法 (2) 使用ProcessBuilder的start()方法 ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Proc
阅读全文