使用android 异步类 为什么不执行 第二次 不执行onPostExecute
2个回答
推荐于2016-04-26 · 知道合伙人数码行家
关注
展开全部
如果不是开发人员,直接跳到第三,异步的概念和同步的区别:
一、在Activity中写一个内部类:
private class TestAsyncTask extends AsyncTask<String, Void, Boolean>
{
@Override
protected void onPreExecute()
{
//最先执行的就是这个。
}
@Override
protected Boolean doInBackground(String... params)
{
//这个是在后台执行的东西,就是说,它自动另外开了个线程运行,不影响现在做的东西。
}
@Override
protected void onPostExecute(Boolean result)
{
if (result)
{
//后台执行的完毕后,会用Result通知这里,就是执行这里了。
}
else
{
//所以最好判断一下result,写个else,判断后台执行的东西是不是出问题了。
}
}
}
二,在onCreate的时候启动这个异步,启动代码如下:
new TestAsyncTask().execute("");
三,异步 和 同步的区别
异步的好处,就是把一些东西,特别是耗时间的东西扔到后台去运行了,doInBackground,程序可以继续做事情,防止程序卡在那里失去响应。
同步执行的话,就是程序会呆板地从头执行到尾,耗时间的东西不执行完,程序不会继续往下走,等待时间长的话,有时候就会造成失去响应了。
一、在Activity中写一个内部类:
private class TestAsyncTask extends AsyncTask<String, Void, Boolean>
{
@Override
protected void onPreExecute()
{
//最先执行的就是这个。
}
@Override
protected Boolean doInBackground(String... params)
{
//这个是在后台执行的东西,就是说,它自动另外开了个线程运行,不影响现在做的东西。
}
@Override
protected void onPostExecute(Boolean result)
{
if (result)
{
//后台执行的完毕后,会用Result通知这里,就是执行这里了。
}
else
{
//所以最好判断一下result,写个else,判断后台执行的东西是不是出问题了。
}
}
}
二,在onCreate的时候启动这个异步,启动代码如下:
new TestAsyncTask().execute("");
三,异步 和 同步的区别
异步的好处,就是把一些东西,特别是耗时间的东西扔到后台去运行了,doInBackground,程序可以继续做事情,防止程序卡在那里失去响应。
同步执行的话,就是程序会呆板地从头执行到尾,耗时间的东西不执行完,程序不会继续往下走,等待时间长的话,有时候就会造成失去响应了。
展开全部
你的描述不具体...
追问
我自定义了一个类 继承 AsyncTask 用来处理与后台 数据的交互 第一次请求 可以,我刷新一下 报错,我DeBug 执行完 doInBackground 之后就跳出了 异步类
追答
刷新的时候你重新创建对象看看,你是不是只写了 task.execute("");
MyAsyncTask task=new MyAsyncTask();
task.execute("");
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询