android之handler和asynctask

Handler消息机制(开线程时注意他什么时候停止,定义一个flagactivity销毁时改变,然后再线程里判断)

第一种方式:sendMessage()来执行更新ui

Private Handler Handler = new Handler(){
	//处理消息(被主线程执行)
	Public void handlerMessage(Message msg){
	String str = (String)msg.obj;
	EditText.setText(str);  //不直接放到子线程中原因:View(界面)只能由主线程更新
}
}
//在子线程中
String str -= “我是网络数据”;
//创建Message对象
Messag msg = new Messa();
Msg.obj = str;
//发送一个消息
Handler.sendMessage(msg);

第二种方式:handler.post(Runnable r)调用run方式可以执行更新ui的代码

AsyncTask(内部类)

Class MyAsyncTask	extends AsyncTask<Integer,Void,String>{
    //被主线程执行,在doInBackground函数前执行
    @Override
	Protected void onPreExecute(){
        //弹加载对话框
    }
        //被子线程执行,用来处理耗时行为
    @Override
    Protected String doInBackground(Integer…params){
	    Return null;
    }
    //被主线程执行,在doInBackground函数后执行
    @Override
    Protected void onPostExecute(String result){
	    //更新UI数据
    }
}

AsycTaskhandler更快,因为有线程池。

若GET url传参中有中文

URLEncoder.encode(“上海”,”UTF-8”);//中文编码

Ex:

URL url = new URL(path+"?keywords="+URLEncoder.encode(“中文”,"utf-8"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值