都是因为在新开的线程中更新UI才出错,子线程中更新主线程UI需要用到Handler.
今天有出现如下错误,代码如下:
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Th...
分类:
移动开发 时间:
2014-10-18 21:05:06
阅读次数:
177
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2014-10-18 20:48:42
阅读次数:
178
在Android实际开发工程中经常会进行一些诸如:文件读写、访问网络等耗时的操作,这些耗时的操作是不建议放到UI线程里的。所以我们会新开一个线程,在子线程中进行这些耗时的操作,耗时操作过程中,UI经常需要更新,但Android是不允许在子线程中修改UI的。所以就出现了Thread+Handler机制,Thread通过handler向主线程发送消息、传递数据,来更新UI。下面就介绍如何通过Thread+Handler方式实现异步操作。...
分类:
移动开发 时间:
2014-10-18 18:26:52
阅读次数:
289
AsyncTask允许你在你的用户界面上执行异步操作。它在一个子线程中执行耗时的操作,然后在UI线程上发布执行结果,而不需要你来处理Thread和Handler。
要使用AsyncTask,你必须继承AsyncTask和实现doInBackground()回调方法,AsyncTask运行在后台的一个线程池中。若要更新你的UI,你应该实现onPostExecute()方法,它从doInBackground()方法中获取的结果,并运行在UI线程中,这样你就可以安全地更新你的UI。你可以在UI线程...
分类:
移动开发 时间:
2014-10-18 18:25:46
阅读次数:
172
1.什么是Handler?SDK中关于Handler的说明例如以下:A Handler allows you to sendand process Messageand Runnable objects associated with a thread'sMessageQueue.Each Hand...
分类:
其他好文 时间:
2014-10-18 18:07:39
阅读次数:
327
public static final Looper myLooper() {
return (Looper)sThreadLocal.get();
}
先来个Handler执行过程的总结:
1、 Looper.prepare()方法
为当前线程绑定looper,
在looper构造方法中创建一个messageQueue
...
分类:
其他好文 时间:
2014-10-18 17:03:47
阅读次数:
178
上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也提供了封装有消息循环(Looper)的HandlerThread类,这种线程,可以绑定Handler()对象,并通过Handler的sendMessage()函数向线程发送消息,通过handleMessage()函数,处理线程接收到的..
分类:
移动开发 时间:
2014-10-18 03:08:41
阅读次数:
187
这里直接用系统Dialog中添加了倒计时的显示,如果用自定义Dialog会更美观;
private TextView mOffTextView;
private Handler mOffHandler;
private Timer mOffTime;
private Dialog mDialog;
//////创建对话框
void initDialog(){
...
分类:
其他好文 时间:
2014-10-17 15:34:48
阅读次数:
252
默认,在ashx文件中无法使用Session,直接获取context.Session只能取得null。解决办法:添加命名空间 using System.Web.SessionState 的引用让这个General Handler类实现IRequiresSessionState接口然后再用contex...
分类:
Web程序 时间:
2014-10-17 15:10:26
阅读次数:
170
路由事件的宿主都是些拥有可视化实体的界面元素,而附加事件则不具备显示在用户界面上的能力。添加和移出附件事件的两个方法命名约定:
1、为目标UI元素添加附加事件侦听器的包装器是一个名为Add*Handler的public static方法。星号代表事件名称,与注册事件时的名称一致。
2、解除UI元素对附加事件侦听的包装器是名为Remove*Handler的public static方法,星号也是...