android_tips
hhitom
这个作者很懒,什么都没留下…
展开
-
用service还是thread?
前段时间在思考一个问题时,还在纠结,一个后台任务,到底是用service实现还是一个thread实现?今天看到有个网友的一句话,顿悟,其实,当如果需要在前台APP(或activity)退出时,还需要继续运行该后台任务,例如接收消息等,那么,就需要考虑采用service来实现。而且,service的优先级很高,不容易退出。原创 2016-03-01 20:00:22 · 305 阅读 · 0 评论 -
线程
new Thread(new Runnable(){ public void run(){ //TODO //在这里写要处理的操作,子线程中不能处理UI的操作(如:textView.setText("cc");),否则报错 }}).start();这样就开了新的线程了。线程可以结合Handler来使用,需要获取线程内部的消息,可以原创 2016-03-16 11:34:16 · 258 阅读 · 0 评论 -
Android:adb 启动activity、service,发送broadcast
Android:adb 启动activity、service,发送broadcast标签: androidbroadcastshellserviceactivity2014-07-28 10:22 5005人阅读 评论(0)收藏举报分类: android(2) 一、adb启动activity:$ adb shell转载 2016-03-18 09:40:20 · 464 阅读 · 0 评论 -
SystemClock.sleep和Thread.sleep的区别
Thread.sleep()是java提供的函数。在调用该函数的过程中可能会发生InterruptedException异常。 SystemClock.sleep()是android提供的函数。在调用该函数的过程中不会发生InterruptedException异常,中断事件将要被延迟直到下一个中断事件。SystemClock.sleep(millis) is a utility func转载 2016-03-18 09:43:21 · 566 阅读 · 0 评论 -
按16进制打印显示一个字节数组的内容
以一个mac地址显示为例: byte[] arrayOfByte = null; ... StringBuffer localStringBuilder = null; if (arrayOfByte != null) { localStringBuilder = new StringBuffer();原创 2016-03-07 11:13:14 · 2806 阅读 · 0 评论 -
使用FileReader以及FileWrite操作文本文件的示例
java BufferedReader使用方法: public class BufferdReader extends Reader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read()原创 2016-03-22 16:08:45 · 660 阅读 · 0 评论 -
关于权限
1. 如果针对某个service定义权限,如果定义在组件级别,则是由SystemServer来检查权限,安全性相对高, 而且,此时如果其他程序来调用,不管是调用何种方法,如果没有权限,则都会触发异常。 而如果定义在方法级别,则是由该Service自己来检查权限。2. 如果把权限定义成SystemOrSinature,则对于UID为System的应用,可不用声明权限,便可以原创 2016-03-28 18:23:57 · 907 阅读 · 0 评论 -
bindService与startService
1. bindService既可以启动一个跨进程的service,也可以启动一个本进程内的service。 如果没有用aidl接口,则bindService不能bind另一个进程的service 如果使用了aidl接口,则在bindService()时,若service还没有启动,则系统会先启动service运行在的新进程。 当然,如果没用aidl,bindservi原创 2016-02-13 21:58:26 · 3726 阅读 · 1 评论 -
灭屏状态下,如何实现按某个键可点亮屏幕
有两个地方需要修改。1. xxx.kl文件 在EP820终端中,/system/usr/keylayout/目录下,有三个文件: hi6421_on.kl :对应电源键的扫描码,字符以及是否唤醒 hisi_gpio_key_15.kl为机身按键的 keypad.kl 为扩展键盘的 只有以上三个文件都没有定义,才会去generic.kl文件中找。 所原创 2016-02-13 22:46:56 · 1909 阅读 · 0 评论 -
如何实现只收听一次sticky的广播,读取电池电量的值
有种场景,只想收听一次广播,例如,在关机时,获取一下电量,若电量超过20%,才进行升级的处理。 【实现方式一】采用传统的收听广播的方式,势必要写个onReceive()方法,并在其中更新当前电量的值,但由于只是想关机时使用一次,其余时候收的广播都是浪费。所以,这样不好。 【实现方式二】不收听广播,还可以调用getBatteryLevel的接口,但由于Batt原创 2016-02-13 22:48:32 · 539 阅读 · 0 评论 -
两个跟锁屏解锁相关的window的flag
(1)WindowManager.LayoutParams.FLAG_DISSMISS_KEYGUARD 应用起来的时候,锁屏界面自动解锁(注:只有application才有效,view是无效的)(2)WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 应用起来的时候锁屏界面自动隐藏,但是不能自动解锁,若原创 2016-02-13 22:10:26 · 468 阅读 · 0 评论 -
布局
针对线性布局而言:android:layout_gravity="center_vertical"意思是水平居中,垂直也居中,指的是本布局相对于父容器而言。相对布局时:实现一个控件在另一个下面,可这样设置:android:layout_below = "@id/上面控件的id"本控件在父容器中水平与垂直居中:android:layout_centerInPare原创 2016-02-13 19:05:33 · 261 阅读 · 0 评论 -
遍历HashMap
example:HashMap connMap = this.mProfileHandle.getConnMap();for(Map.Entry entry : connMap.entrySet()) { String address = (String)entry.getKey(); int connId = ((Integer)entry.getValue()).i原创 2016-02-13 16:30:12 · 266 阅读 · 0 评论 -
从Settings数据库中取boolean类型数据
由于Settings中未提供boolean类型数据的接口,可通过int接口读取,如:mDreamEnabledSetting = (Settings.Secure.getIntForUser(resolver, Settings.Secure.SCREENSAVER_ENABLED, mDreamsEnabledByDefaultConfig ? 1 :0, UserHandle原创 2016-02-13 16:42:25 · 890 阅读 · 0 评论 -
向config.xml中添加一个配置项
1. 在config.xml中添加一项(路径:frameworks/base/core/res/res/values/)如: true2. 在 frameworks/base/core/res/res/values/symbols.xml中,添加:3. 在frameworks/base/core/res/res/values/android.xml中,添加一带有id的项,但此i原创 2016-02-13 16:58:20 · 1267 阅读 · 1 评论 -
内部类
=======说明======1. 内部类可以是public的,也可以是private及protected,但外部类不能是private及protected。2. 一个java文件只允许有一个public的class,指的是并列的外部类而言的,但内部类可以是public的。3. 一个java文件对应一个.class文件,即使该java文件中还有一些非public的类,也在一个.cla原创 2016-02-13 17:03:39 · 626 阅读 · 0 评论 -
获取资源的值
(1) 从values.xml中获取一个资源字符串的值,如: mNetworkName = getContext().getString(R.String.PubWidgetName);(2)从confg.xml(frameworks/base/core/res/res/values/)中获取一个字符串数组, 并保存到一个ArrayList中: R原创 2016-02-13 17:31:22 · 294 阅读 · 0 评论 -
异常处理中的打印
在异常处理的打印时,遇到一个问题,try{ ...} catch(Exception e) {}时,会提示异常没有处理,于是,修改成try { ...} catch(Exception e) { Log.e(TAG, e.getMessage());}发现,在Log.e中报异常,显示println中无法把int型直接打印,原来,由于e.原创 2016-02-13 17:42:20 · 341 阅读 · 0 评论 -
关于属性
简单地说,Android属性分三种,可在/system/init/property_services.c中看到。(1)静态只读属性(以ro开头)这种属性,程序不可修改,编译时,值就定了,程序获取时,一般会先从cust仓(华为的做法)中获取,若获取不到,再到/system/build.prop文件中获取,若获取不到,最后,会到/default.prop文件中获取。由于原创 2016-02-13 17:51:33 · 684 阅读 · 0 评论 -
dumpsys
用来打印当前状态下,某service中的信息,前提是该service中实现了对应的dump函数用法:dumpsys 使用:先adb shell进入终端界面root@EP681V1:/# dumpsys power //打印电源管理的信息以下是一些常用的:dumpsys usbdumpsys activitydumpsys input //打印input系统的信息原创 2016-02-13 18:10:39 · 538 阅读 · 0 评论 -
打印函数调用栈
该技巧在调试时很有用,可以看看在调用到某方法之前的调用栈,如下:例如,要知道是怎么一步步调用到goToSleep()的,可如下写:public void goToSleep(long eventTime, int reason) { new Exception("PMS:goToSleep").printStackTrace(); ...}其中,Exceptio原创 2016-02-13 18:12:08 · 361 阅读 · 0 评论 -
向Settings中添加一项
一般需经过如下步骤,当然,如果不考虑终端第一次启动时的默认值问题,1. 修改Settings.java,添加字段的定义该文件中有System/Global/Security三个表分别对应的三个内部类,故,首先确定要加到哪个表中,找到相应的位置后添加。2. 修改DatabaseHelper.java主要是跟数据库平滑升级以及添加默认值项有关,需改动以下三个地方:(1)修改原创 2016-02-13 18:31:53 · 588 阅读 · 0 评论 -
把对象生成为Parcel类型,以及如何利用Parcel来传递Enum类型数据
public class Settings implements Parcelable { private static final String TAG = "Settings"; private Command mCommand; private DataPattern mDataPattern; private int mPredefinedData;原创 2016-05-12 10:21:28 · 2366 阅读 · 0 评论