android 网络超时时间设置,android 设置网络请求超时

该博客探讨了在Android中如何在UI线程中正确更新界面,强调了不能在Runnable线程中直接操作UI。通过实例展示了如何使用AsyncTask和Handler来实现后台加载数据并在UI线程中安全地更新UI,同时处理网络连接超时的问题。
摘要由CSDN通过智能技术生成

UI界面更新必须在ui线程中 不能在ruanable线程中操作ui 可以发送消息利用handler来更新ui

private void load() {

LoadDate load = new LoadDate();

load.execute("http://h.hiphotos.baidu.com/image/w%3D310/sign=1bc9c0da38292df597c3aa148c305ce2/c83d70cf3bc79f3d77fbe1c5b8a1cd11728b2928.jpg");

}

class LoadDate extends AsyncTask {

@Override

protected void onPreExecute() {

//            myDialog.setTitle("请稍候");

//            myDialog.setMessage("loading......");

//            myDialog.setCanceledOnTouchOutside(false);

//            myDialog.show();

}

@Override

protected Bitmap doInBackground(String... params) {

URL myFileUrl = null;

Bitmap bitmap = null;

InputStream is = null;

HttpURLConnection conn = null;

try {

myFileUrl = new URL(params[0]);

} catch (MalformedURLException e) {

e.printStackTrace();

}

try {

conn = (HttpURLConnection)myFileUrl

.openConnection();

conn.setDoInput(true);

conn.connect();

conn.setConnectTimeout(3000);

conn.setReadTimeout(3000);

is =conn.getInputStream();

bitmap =BitmapFactory.decodeStream(is);

is.close();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(is != null){

is.close();

}

if( conn != null){

conn.disconnect();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

startTime(bitmap);

return bitmap;

}

Handler myHandler=new Handler(){

public void handleMessage(Message msg) {

if(msg.what==1){

Toast.makeText(MainActivity.this, "连接服务器超时"+msg.obj, 1).show();

}

};

};

private void startTime( final Bitmap bm) {

Runnable run=new Runnable() {

boolean isRun=true;

long enableTime;

long startTime=System.currentTimeMillis();

@Override

public void run() {

System.out.println(bm+"---bm----");

while(isRun){

enableTime=System.currentTimeMillis()-startTime;

if(enableTime>=3000 &&bm==null){

Message message = new Message();

message.what = 1;

message.obj="demo";

myHandler.sendMessage(message);

//                            Toast.makeText(MainActivity.this, "连接服务器超时", 1).show();

isRun=false;

}

try{

Thread.sleep(50);

}catch (Exception e) {

System.out.println("计时器线程 sleep ex:"+e.toString());

}

}

System.out.println("计时器线程run..end time:"+enableTime);

}

};

//                Looper.prepare();

new Thread(run).start();

}

@Override

protected void onPostExecute(Bitmap result) {

image.setImageBitmap(result);

//            myDialog.cancel();

System.out.println(result+"---");

}

}

}

原文:http://www.cnblogs.com/mengxq/p/3892805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值