AsyncTask的使用代码

原创 2018年04月15日 19:40:44
public class MainActivity extends AppCompatActivity {

    private ListView listview;
    private String myutrp="http://api.tianapi.com/social/?key=9ae87ac342f61fe405423fa5db830b54&num=10";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源id
        listview = findViewById(R.id.listview);

        // 调用异步任务
        MyTask myTask = new MyTask();
        myTask.execute(myutrp);


    }
    /**
     * 泛型类
     * params1:请求的网络地址  String  Void
     * params2:网络请求的进度   Integer Void
     * params3:服务器返回的数据类型   String Bitmap Void
     */
    class MyTask extends AsyncTask<String,Integer,String>{
        //在后台运行
        @Override
        protected String doInBackground(String... strings) {//String... 可变长的字符串  string类型的数组,长度不固定
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.setConnectTimeout(5000);
                urlConnection.setReadTimeout(5000);

                if (urlConnection.getResponseCode()==200){
                    InputStream inputStream = urlConnection.getInputStream();
                    //将流转换成String
                    String s = StreamToString(inputStream);
                    return s;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        //更新进度
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

        }
        //用于用户提示
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Toast.makeText(MainActivity.this,"正在请求网络,..请稍后",Toast.LENGTH_SHORT).show();
        }
        //在doInBackground之后,调用的方法,,,更新UI的操作,相当于handlerMessage中的功能
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //解析展示
            Gson gson = new Gson();
            RestData restData = gson.fromJson(s, RestData.class);
            List<RestData.NewslistBean> list = restData.getNewslist();

            //创建适配器
            MyAdapter myAdapter = new MyAdapter(MainActivity.this, list);
            listview.setAdapter(myAdapter);

        }
    }
    //将流转换成String
    private String StreamToString(InputStream stream){
        StringBuilder builder = new StringBuilder();
        String str;
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        try {
            while ((str=reader.readLine())!=null){
                    builder.append(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return builder.toString();
    }
}

AsyncTask 使用及封装实践

前言这篇博客主要是讲解AsyncTask的使用及封装实践,对于新手们还是有很大的参考意义的,尤其是AsyncTask的封装实践这部分。这篇博客主要讲解以下问题: - AsyncTask的简单使用...
  • gdutxiaoxu
  • gdutxiaoxu
  • 2017年02月26日 12:54
  • 1332

Android基础 Android AsyncTask使用注意事项以及总结

1. 1) Task的实例必须在UI thread中创建 2) execute方法必须在UI thread中调用 3) 不要手动的调用onPreExecute(), onPostExecute...
  • qq_33326449
  • qq_33326449
  • 2016年10月06日 14:34
  • 375

AsyncTask你真的用对了吗?

在之前的文章深入探究了Handler,《从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)》我们知道了Android的消息机制主要靠H...
  • ly502541243
  • ly502541243
  • 2016年08月26日 16:40
  • 9940

一个例子谈谈AsyncTask的用法

Android前端复习
  • Kaiwii
  • Kaiwii
  • 2014年03月19日 16:51
  • 4118

Android应用AsyncTask处理机制详解及源码分析

【工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果】1 背景Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个知...
  • yanbober
  • yanbober
  • 2015年05月28日 16:02
  • 8672

Android之AsyncTask的使用(二)之文件下载

声明: 本人菜鸟一枚, 本博客是本人自学的内容, 适用于初学者, 不喜勿喷, 谢谢大家下载案例 AsyncTask准则 通过上一篇博客我们学习到了AsyncTask的主要作用, 那今天就写一个实际...
  • u013144863
  • u013144863
  • 2016年07月07日 22:41
  • 1446

AsyncTask使用以及源码分析

在Android中,我们需要进行一些耗时的操作,会将这个操作放在子线程中进行。在子线程操作完成以后我们可以通过Handler进行发送消息,通知UI进行一些更新操作(具体使用及其原理可以查看[Andro...
  • ljd2038
  • ljd2038
  • 2016年03月19日 16:38
  • 3812

AsyncTask实时跟进进度(倒数计时器)

public class MainActivity extends Activity implements OnClickListener { private Button button; ...
  • a_sid
  • a_sid
  • 2017年03月22日 18:26
  • 469

Asynctask解析以及注意事项

说到AsyncTask这个类,好多人其实不太了解。最近看了下代码,把心得分享给大家。     AsyncTask的execute的执行流程为     先调用ThreadPoolExecutor.e...
  • ljx19900116
  • ljx19900116
  • 2015年04月20日 14:56
  • 764

ProgressDialog和AsyncTask结合使用

ProgressDialog和AsyncTask结合使用
  • FlyPig_Vip
  • FlyPig_Vip
  • 2017年07月27日 11:32
  • 351
收藏助手
不良信息举报
您举报文章:AsyncTask的使用代码
举报原因:
原因补充:

(最多只允许输入30个字)