当前位置: 首页 > news >正文

新余市网站建设_网站建设公司_博客网站_seo优化

做一些好玩的个人网站,商户如何做h5商城网站是什么意思,印章生成器,婚庆公司分析#xff1a;在分析实现流程之前#xff0c;我们先了解一下AsyncTask有哪些成员变量。privatestaticfinalintCORE_POOL_SIZE 5;//5个核心工作线程privatestaticfinalintMAXIMUM_POOL_SIZE 128;//最多128个工作线程privatestaticfinalintKEEP_ALIVE 1;//空闲线程的超时时间…分析在分析实现流程之前我们先了解一下AsyncTask有哪些成员变量。privatestaticfinalintCORE_POOL_SIZE 5;//5个核心工作线程privatestaticfinalintMAXIMUM_POOL_SIZE 128;//最多128个工作线程privatestaticfinalintKEEP_ALIVE 1;//空闲线程的超时时间为1秒privatestaticfinalBlockingQueue sWorkQueue newLinkedBlockingQueue(10);//等待队列privatestaticfinalThreadPoolExecutorsExecutor newThreadPoolExecutor(CORE_POOL_SIZE,MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sWorkQueue,sThreadFactory);//线程池是静态变量所有的异步任务都会放到这个线程池的工作线程内执行。回到例子中点击按钮之后会新建一个GetCSDNLogoTask对象GetCSDNLogoTask task newGetCSDNLogoTask();此时会调用父类AsyncTask的构造函数AsyncTask.javapublicAsyncTask() {mWorker newWorkerRunnable() {publicResult call()throwsException {Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);returndoInBackground(mParams);}};mFuture newFutureTask(mWorker) {Overrideprotectedvoiddone() {Message message;Result result null;try{result  get();}catch(InterruptedException e) {Android.util.Log.w(LOG_TAG, e);}catch(ExecutionException e) {thrownewRuntimeException(An error occured while executing doInBackground(),e.getCause());}catch(CancellationException e) {message  sHandler.obtainMessage(MESSAGE_POST_CANCEL,newAsyncTaskResult(AsyncTask.this, (Result[])null));message.sendToTarget();//取消任务发送MESSAGE_POST_CANCEL消息return;}catch(Throwable t) {thrownewRuntimeException(An error occured while executing doInBackground(), t);}message  sHandler.obtainMessage(MESSAGE_POST_RESULT,newAsyncTaskResult(AsyncTask.this, result));//完成任务发送MESSAGE_POST_RESULT消息并传递result对象message.sendToTarget();}};}WorkerRunnable类实现了callable接口的call()方法该函数会调用我们在AsyncTask子类中实现的doInBackground(mParams)方法由此可见WorkerRunnable封装了我们要执行的异步任务。FutureTask中的protected void done() {}方法实现了异步任务状态改变后的操作。当异步任务被取消会向UI线程传递MESSAGE_POST_CANCEL消息当任务成功执行会向UI线程传递MESSAGE_POST_RESULT消息并把执行结果传递到UI线程。由此可知AsyncTask在构造的时候已经定义好要异步执行的方法doInBackground(mParams)和任务状态变化后的操作(包括失败和成功)。当创建完GetCSDNLogoTask对象后执行task.execute(http://www.linuxidc.com/pic/logo.gif);此时会调用AsyncTask的execute(Params...params)方法AsyncTask.javapublicfinalAsyncTask execute(Params... params) {if(mStatus ! Status.PENDING) {switch(mStatus) {caseRUNNING:thrownewIllegalStateException(Cannot execute task: the taskis already running.);caseFINISHED:thrownewIllegalStateException(Cannot execute task: the taskhas already been executed (a task canbe executed only once));}}mStatus  Status.RUNNING;onPreExecute();//运行在ui线程在提交任务到线程池之前执行mWorker.mParams  params;sExecutor.execute(mFuture);//提交任务到线程池returnthis;}当任务正在执行或者已经完成会抛出IllegalStateException由此可知我们不能够重复调用execute(Params...params)方法。在提交任务到线程池之前调用了onPreExecute()方法。然后才执行sExecutor.execute(mFuture)是任务提交到线程池。前面我们说到当任务的状态发生改变时(1、执行成功2、取消执行3、进度更新)工作线程会向UI线程的Handler传递消息。在《Android异步处理三HandlerLooperMessageQueue深入详解》一文中我们提到Handler要处理其他线程传递过来的消息。在AsyncTask中InternalHandler是在UI线程上创建的它接收来自工作线程的消息实现代码如下AsyncTask.javaprivatestaticclassInternalHandlerextendsHandler {SuppressWarnings({unchecked,RawUseOfParameterizedType})OverridepublicvoidhandleMessage(Message msg) {AsyncTaskResult result (AsyncTaskResult) msg.obj;switch(msg.what) {caseMESSAGE_POST_RESULT:// There is onlyone resultresult.mTask.finish(result.mData[0]);//执行任务成功break;caseMESSAGE_POST_PROGRESS:result.mTask.onProgressUpdate(result.mData);//进度更新break;caseMESSAGE_POST_CANCEL:result.mTask.onCancelled();//取消任务break;}}}当接收到消息之后AsyncTask会调用自身相应的回调方法。总结1、 AsyncTask的本质是一个静态的线程池AsyncTask派生出的子类可以实现不同的异步任务这些任务都是提交到静态的线程池中执行。2、线程池中的工作线程执行doInBackground(mParams)方法执行异步任务3、当任务状态改变之后工作线程会向UI线程发送消息AsyncTask内部的InternalHandler响应这些消息并调用相关的回调函数
http://www.ihoyoo.com/news/80215.html

相关文章:

  • 网站后台修改不了沈阳网站建设推广服务
  • 网站备案名可以更改吗国内三大it外包公司
  • 佛山设计网站设计价格广州市公司网站建设公司
  • wordpress超级留言板百度荤seo公司
  • 做网站如何月入10万银川网站建设报价
  • 手机网站开发 图库类网站开发服务计入什么科目
  • 医院网站建设管理规范wordpress添加标签
  • 张家口网站设计丰台网站建设推广seo
  • 网站备案 影响社交网站开发公司
  • 班级网站的规划与建设怎么制作自己的免费网站
  • 积极推进在线网站建设visual c 网站开发
  • wordpress主题 站长青岛专业做网站
  • 网站添加文章南京金九建设集团网站
  • 红酒 公司 网站建设html网站地图生成器
  • 杭州公司建设网站制作计算机专业主要学什么女生
  • flash网站下载wordpress ping
  • 做公司网站要学会什么国内vps做网站要备案吗
  • 海南建设工程信息网站抖音推广联盟
  • 坑梓网站建设流程wordpress多地区
  • 做微信商城设计网站网页游戏大全网址
  • 辽宁大学网站怎么做购房网官网
  • 网站登录系统怎么做个人网页的代码
  • 怎样查看网站建设时间怎样建设国外网站
  • 包装设计价格seo优化师培训
  • 网站开发 英语php响应式网站模板
  • 公司网站制作注意事项网络推广公司深圳
  • 网站备案 的类型浙江seo公司
  • 盘锦市城乡建设厅网站无极城市在线招聘
  • 笑话网站源码下载网站建设需要哪些费用支出
  • ag电子游戏网站开发wordpress卖产品