当前分类 / 源码 / 总共4篇

Handler和HandlerThread

Hander

Hander的主要作用有两个:

  1. 延迟处理消息。
  2. 在其他线程处理消息。

这里的消息可以理解为MessageRunnable,通过如下方法来调度消息。

方法作用
post(Runnable)将Runnable对象添加到消息队列
postAtTime(java.lang.Runnable, long)加入消息队列,在特定时间执行Runnable对象
postDelayed(Runnable, Object, long)加入消息队列,延迟执行
sendEmptyMessage(int)仅仅发送what值消息
sendMessage(Message)将Message对象加入队列
sendMessageAtTime(Message, long)同理
sendMessageDelayed(Message, long)同理

Runnable实际上是将该Runnable匿名对象排入队列,在其他线程执行该消息,这里的其他线程可以理解为MessageQueue所在的线程。

阅读更多

Android中带检索功能的联系人列表实现

Android 中如何实现拼音检索的联系人列表,可以通过字母分组检索,实现过程和源代码如下。

演示

Android检索功能的联系人列表演示 Android检索功能的联系人列表演示

汉字转拼音

汉字转拼音的 jar 包 汉字转拼音的 jar 包

1
2
String pinyingStr = PinyinHelper.getShortPinyin(
           String.valueOf(charSequence).toLowerCase().trim());

阅读更多

AndroidStudio 多个 AppId 多渠道快速打包

一直感觉 AndroidStudio 没有 eclipse 快,但是最近由于遇到一个问题不得不将工程迁移到 AndroidStudio 上,迁移后之前在 eclipse 上所做的所有批量打包又得重新在 AndroidStudio 上搞一遍,不得不说这个过程远比我想象的让人愉快,AndroidStudio 的强大和好用改变了之前我对这个 IDE 的偏见,无疑这个 IDE 是开发 Android 的最好工具。

普通打包配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
defaultConfig {
    applicationId myAppId
    minSdkVersion 14
    targetSdkVersion 19
    versionCode vCode
    versionName vName
    testApplicationId "com.xx.xxx.test"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"
    multiDexEnabled true
    signingConfig signingConfigs.releaseConfig
    manifestPlaceholders = [package_name: myAppId, app_icon: myAppIcon,
                            app_name: myAppName, umeng_appkey: umengAppKey,
                            main_menu_json: mainMenus, main_app_change_string:appChangedText]
}

这个配置是一个默认配置项,我们可以将一些公共的东西配置在这里,在这里可以看到我对 AppId (也就是通常说的包名)用一个变量进行配置,因为在我的工程中同一个源码要打多个应用(AppId),像这样的需求应该不多见,但是你总有一天会碰到。

阅读更多