Waychel

发现一个新世界


  • 首页

  • 关于

  • 归档

将HttpClient请求获取到的Cookie设置到Webview组件

发表于 2014-06-11

android访问网络时用到Apache的HttpClient,用此类可以去访问网络获取数据,有些项目需要会返回Cookie,并调用Webview来访问某页面,为了保持WebView组件用到的Cookie与之前获取得到的一致,这时可以通过CookieSyncManager和CookieManager来实现

1
2
3
4
5
6
7
8
9
10
11
/** 
* 同步一下cookie
*/
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie
CookieSyncManager.getInstance().sync();
}

增加
webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setJavaScriptEnabled(true);
属性,否则设置Cookie无效

然后在调用webView.loadUrl(url)之前一句调用此方法就可以给WebView设置Cookie

Note:这里一定要注意一点,在调用设置Cookie之后不能再更改

Android Handler

发表于 2014-06-04

一、 Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.

当应用程序启动时,Android首先会开启一个主线程, 主线程为管理界面中的UI控件,进行事件分发,更新UI只能在主线程中更新,子线程中操作是危险的。这个时候,Handler就需要出来解决这个复杂的问题。由于Handler运行在主线程中(UI线程中),它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传递)Message对象(里面包含数据), 把这些消息放入主线程队列中,配合主线程进行更新UI。

二、Handler的特点
Handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建它的线程中,
Handler有两个作用:
(1)安排消息或Runnable 在某个主线程中某个地方执行

(2)安排一个动作在不同的线程中执行
Handler中分发消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.

例:

1
2
3
4
5
6
7
8
9
10
Handler handler = new Handler() {  
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
myView.invalidate();
break;
}
super.handleMessage(msg);
}
};

handler.sendMessage(msg)

Source Code: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.1_r1/android/os/Handler.java#Handler

SQL LIMIT OFFSET 的理解

发表于 2014-05-30

SELECT * FROM table LIMIT 0,5;

检索数据行 0~5

SELECT * FROM table LIMIT 10 OFFSET 10;

检索10行数据,并偏移10条,即检索11~20

另:java 中 Collections.reverse(List list)可对list进行倒序

使用adb.exe连接SQLite

发表于 2014-05-23

1.最新版本Android SDK已将adb.exe放到..\sdk\platform-tools(之前是在tools),可将该地址放到Path环境变量中
2.打开cmd,输入 adb shell(记得之前得连接好手机)
3.输入sqlite3 /data/data/... .db 即可连接上数据库
.database List names and files of attached databases

.schema可以看到创建的表(Show the CREATE statements)


Note:增删改查时命令最后得加上“;”

Android Service

发表于 2014-05-12

1.通过startService()启动流程:
onCreate()->onStart()->Service is running -> stopService() -> onDestroy() -> Service结束
1)如果Service还没有运行,则android先调用onCreate(),然后调用onStart();
2)如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。
3)如果stopService的时候会直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行,该Service的调用者再启动起来后可以通过stopService关闭Service。
小结:调用startService的生命周期为:onCreate –> onStart (可多次调用) –> onDestroy

2.通过bindService()启动:
onCreate()->onBind()->Service is running-> onUnbind() -> onDestroy() -> Service结束
1)onBind()将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service的实例、运行状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。
小结:调用bindService的生命周期为:onCreate –> onBind(只一次,不可多次绑定) –> onUnbind –> onDestory。

在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

文章来源:http://blog.csdn.net/ithomer/article/details/7364024 ,有稍作修改!

1…5678
Waychel

Waychel

关注互联网、物联网、创业、产品、技术

36 日志
9 标签
© 2014 - 2022 Waychel
粤ICP备14032841号-1