安卓开发之AsyncTask革命性用法,抓住漏洞把情报送进去(原创)

抓住AsyncTask漏洞把情报送进去。
今天终于穿越火线把数据送入AsyncTask的doInBackground中。
我要编写一个通过socket和服务器通信的安卓程序。但是安卓主线程也叫UI线程,由于要操控UI不允许建立socket链接之类的有可能阻塞线程的操作。我决定用安卓特有的AsyncTask来完成(应该是安卓特色吧!)。通过2天对AsyncTask的研究。发现AsyncTask有一个局限。如果要在doInBackground部分进行死循环监听的话。doInBackground一旦启动,主线程就不能再把别的参数送进去执行。doInBackground就像铁桶般难以渗透。试了很多方法都失败了。2天里搞得我茶饭不思。正准备要放弃AsyncTask时候,发现有一个通过向主线程操作ui的方法publishProgress。关于AsyncTask详细介绍我就不啰嗦了。网上资料大把。这里只讲关键的。我也不想贴代码只讲原理。通过大家确实想看代码就“强烈要求”吧。干活在下面:
如果在doInBackground中执行publishProgress(st)后st会被送到onProgressUpdate(st)中。这个操作本来是用来更新进度信息的。貌似只是单向操作如用textView.setText(st)设定外面的ui。但是我发现可以在外面主线程设定textView.setText(st)。在onProgressUpdate(st)里面用textView.getText().toString()读出外面设定的数据。这样情报既然都到达onProgressUpdate了。进入doInBackground那还不是小菜一碟。用个全局变量就搞定。另外我试过用一个变量来沟通内外但是不行。用一个控件来传递参数,我自己也醉了。这算是漏洞,bug。还有这个方法是否有什么安全隐患我还不得而知。大家来讨论吧。
题目是不是太狂,如果有大侠就这没什么了不起请原谅!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值