zoukankan      html  css  js  c++  java
  • 在Android中什么是异步执行;

    今天在项目中约到一个问题。什么是异步。在网上百度一下,这个解答不错,分享给大家。

    地址:http://zhidao.baidu.com/question/381617804.html

    我来给你讲解一下异步的使用吧,
    如果你不是开发人员,直接跳到第三,异步的概念 和 同步的区别:
    一、在你的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,程序可以继续做自己的事情,防止程序卡在那里失去响应。
    同步执行的话,就是程序会呆板地从头执行到尾,耗时间的东西不执行完,程序不会继续往下走,等待时间长的话,有时候就会造成失去响应了。
    
    我就是搞开发的,呵呵。我的代码你直接贴进去就能用的。打字贴代码辛苦啊~~望采纳。也欢迎追问

    追问

    我也是搞开发的,我也弄了你这个Android异步的例子
    protected void onPostExectute(String result) {
    			// doInBackground返回进触发,抵免话说,就是doInBackground执行完后触发
    			// 这里的result就是上面doInBackground执行后的返回 值,所以这时是"执行完毕"
    			MainActivity.this.setTitle(result);
    			
    			System.out.println(result);
    			
    			
    			super.onPostExecute(result);
    
    		}

    回答

    哈哈,咱们都是搞开发的代码工。算是有缘哈!
    恩,你说得对,
    onPostExecute(Boolean result)里的参数result,就是doInBackground的返回值。就是用它去触发onPostExecute的。
    这个参数是个布尔型,不是String型啊。你的追问里,把参数写成String了。
    
    一、你先随便让doInBackground返回一个值(Boolean ):
     @Override
      protected Boolean doInBackground(String... params)
      {
        return true; //或者你让它return false;
     }
    
    二、然后你这样打印出来看
     @Override
      protected void onPostExecute(Boolean result)
      {
        super.onPostExecute(result);
        MainActivity.this.setTitle("result is: " + result);
        System.out.println("result is: " + result);
      }
    
    这样你就一目了然啦。调试成功了吗?
  • 相关阅读:
    浅析Java源码之LinkedList
    浅析Java源码之ArrayList
    Vue源码终笔-VNode更新与diff算法初探
    Vue源码后记-更多options参数(2)
    Vue源码后记-更多options参数(1)
    Vue源码后记-其余内置指令(3)
    Vue源码后记-其余内置指令(2)
    Vue源码后记-其余内置指令(1)
    Vue源码后记-vFor列表渲染(3)
    Linux/CentOS 7 timezone 修改
  • 原文地址:https://www.cnblogs.com/pengqinping/p/2537687.html
Copyright © 2011-2022 走看看