方式一:使用广播
方式二:使用回调函数,这个时候需要利用Handler,因为非UI线程不能更新UI界面。
首先,预先定义一个主线程的Handler
private Handler mainUIHandler = new Handler();
然后,在回调的时候,使用该Handler,向UI线程中扔一个Runnable对象
mainUIHandler.post(new Runnable() {
@Override
public void run() {
// 更新界面
}
});
handler也可以这样构造
Handler handler = new Handler(Looper.getMainLooper());
2. 手机的唯一标识
这篇文章中讲的比较好了,http://luhuajcdd.iteye.com/blog/1608746,http://blog.youkuaiyun.com/easy_gemini/article/details/8601482
上面文章中的方法可以比较好的给出唯一标识。deviced id:需要读取手机状态的权限,pad没有这个,个别手机也可能没有。 Sim Num:也需要读取手机状态的权限。MacAddress:Wifi关闭的时候可能读不到。AndroidId: wipe重置之后,会改变。如果都没有的时候,可以用随机的UUID。有的话,用其中的一个产生一个UUID。产生UUID保存到SharedPreference即可。
代码示例,
3. 页面返回的时候,在哪里setResult
onBackPressed,返回键里面可以设置,但是actionbar的返回按钮,不会触发onBackPressed。
finish,super.finish会设置result,只要再finish里面的super.finish之前setResult即可。
@Override
public void finish() {
try {
// setResult
} catch (Exception e) {
L.e(this, e);
}
super.finish();
}
4. 如何去掉ListView滚动到底部或者顶部的渐变(滚动到顶继续按住的时候显示)
if (Build.VERSION.SDK_INT >= 9) {
mSHList.setOverScrollMode(View.OVER_SCROLL_NEVER); // api level 9以上才能调用
}
关机overscroll,可以参见,关于android2.3的overscroll http://blog.youkuaiyun.com/zouxueping/article/details/6832805
4. 如何去掉ListView上边缘与下边缘阴影(滚动过程中和滚动结束后都有显示)
android:fadingEdge="none"
5. 字符串安装拼音排序
String chLeftName = new String(leftName.getBytes("GB2312"), "ISO-8859-1");
String chRightName = new String(rightName.getBytes("GB2312"), "ISO-8859-1");
return chLeftName.compareTo(chRightName);
编码由很多种,Java的自身编码是Unicode,为了实现Unicode,一个char两个字节,而C++里面是一个char一个字节,别混淆了。String.compareTo是根据字符串的unicode进行比较的。unicode和拼音无关,所以直接进行compareTo是不能实现拼音排序的。
但是gb2312是一种区位编码,两个字节表示一个字,前面划出94个区,后面划出94个区,可以实现排序。但是要怎么做呢?
首先我们用getBytes方法,得到字符串的gb2312编码数组,然后直接比较数组就可以了,但是数组比较比较麻烦,有没有办法直接使用compareTo呢?ISO-8859-1是单字节编码,如utf-8是完全兼容的,转化成iso-8859-1之后,就可以直接compareTo了。
6. webview背景色加载闪一下
用android:background,为webview设置了灰色的背景,但是每次加载html的时候,会先闪一下白色。
用代码设置了下backgroundcolor就不会闪了。
mNormalView.setBackgroundColor(getResources().getColor(R.color.note_normal_view_bg));