安卓开发之基于
AsyncTask的socket常连接方法。
我要编写一个通过socket和服务器通信的安卓程序。但是安卓主线程也叫UI线程,由于要操控UI不允许建立socket链接之类的有可能阻塞线程的操作。我决定用安卓特有的AsyncTask来完成(应该是安卓特色吧!)。通过2天对AsyncTask的研究。发现AsyncTask有一个局限。如果要在doInBackground部分进行死循环监听的话。doInBackground一旦启动,主线程就不能再把别的参数送进去执行。doInBackground就像铁桶般难以渗透。要想长连接数据交换根本不可能。试了很多方法都失败了。2天里搞得我茶饭不思。正准备要放弃AsyncTask时候,发现有一个通过向主线程操作ui的方法publishProgress。关于AsyncTask详细介绍我就不啰嗦了。网上资料大把。这里只讲关键的。我也不想贴代码只讲原理。通过大家确实想看代码就“强烈要求”吧。干活在下面:
如果在doInBackground中执行publishProgress(st)后st会被送到onProgres