`
- 浏览:
1042434 次
-
packagetest.me.layout; importandroid.app.Activity; importandroid.os.AsyncTask; importandroid.os.Bundle; importandroid.os.Handler; importandroid.os.Message; importandroid.os.SystemClock; importandroid.util.Log; importandroid.widget.TextView; importandroid.widget.Toast; /**一个使用异步任务的例子。一般来说一个异步任务只执行一次,这个例子有点非主流,任务结束后会触发下一次任务执行。 *由任务task在屏幕上打印数字,第一次任务执行由主Activity的onCreate触发,每次任务结束后 *设定下一次触发的时间,共执行5次。对于任务来说doInBackground()接收任务的参数params,并执行产生数字的动作,每一个数字 *产生后调用一次publishProgress()来更新UI,这个函数本身也是异步的只是用来发个消息调用完成后立即返回, *而产生数字的动作在继续进行。更新界面的操作在onProgressUpdate()中设定。 *所有的on函数都由系统调用,不能用户调用。 *代码中使用Handler是为了能触发任务执行,android规定这种异步任务每次执行完就结束,若要重新执行需要new一个新的。 *异步任务只能在UI线程里面创建和执行*/ publicclasstestAsyncextendsActivity{ privatefinalintMSG_TIMER=12; privateTextViewvText=null; @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.test); vText=(TextView)findViewById(R.id.TextView01); vText.setText("Num..."); newtask().execute("->"); } //接收任务task发来的消息,触发一个新的任务 privatefinalHandlerhandler=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ //TODOAuto-generatedmethodstub super.handleMessage(msg); switch(msg.what){ caseMSG_TIMER: newtask().execute("->"); break; } } }; //任务执行次数 privatestaticinttimes=1; //AsyncTask<>的参数类型由用户设定,这里设为三个String //第一个String代表输入到任务的参数类型,也即是doInBackground()的参数类型 //第二个String代表处理过程中的参数类型,也就是doInBackground()执行过程中的产出参数类型,通过publishProgress()发消息 //传递给onProgressUpdate()一般用来更新界面 //第三个String代表任务结束的产出类型,也就是doInBackground()的返回值类型,和onPostExecute()的参数类型 privateclasstaskextendsAsyncTask<String,String,String>{ //后台执行的耗时任务,接收参数并返回结果 //当onPostExecute()执行完,在后台线程中被系统调用 @Override protectedStringdoInBackground(String...params){ //TODOAuto-generatedmethodstub //在这里产生数据,送给onProgressUpdate以更新界面 Stringpre=params[0]; for(inti=0;i<5;i++){ publishProgress(pre+i); //这里是否需要停顿下 SystemClock.sleep(1000); } return"任务结束"; } //任务执行结束后,在UI线程中被系统调用 //一般用来显示任务已经执行结束 @Override protectedvoidonPostExecute(Stringresult){ //TODOAuto-generatedmethodstub super.onPostExecute(result); Toast.makeText(testAsync.this,result,Toast.LENGTH_SHORT).show(); //任务执行5次后推出 if(times>5){ return; } //设定下一次任务触发时间 Messagemsg=Message.obtain(); msg.what=MSG_TIMER; handler.sendMessageDelayed(msg,10000L); } //最先执行,在UI线程中被系统调用 //一般用来在UI中产生一个进度条 @Override protectedvoidonPreExecute(){ //TODOAuto-generatedmethodstub super.onPreExecute(); Toast.makeText(testAsync.this,"开始执行第"+times+"次任务:"+this,Toast.LENGTH_SHORT).show(); times++; } //更新界面操作,在收到更新消息后,在UI线程中被系统调用 @Override protectedvoidonProgressUpdate(String...values){ //TODOAuto-generatedmethodstub super.onProgressUpdate(values); vText.append(values[0]); } } }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Android异步任务下载一张图片,关键是异步任务的流程,带进度条的异步任务
AsyncTask异步任务Demo
android程序------带有进度条的异步任务下载图片
springboot异步任务案例,通过注解来实现定时器,以及相应的异步任务的执行。
主要介绍了Django异步任务线程池实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Android 异步任务。减少了许多重复的工作,是一个Google的AsyncTask的精简版(使用Google的AsyncTask,内部开销比较大,不适合简单开发,对于比较负责或者要求多线程异步任务的时候比较适合使用Google的AsyncTask)
一个完整的Android异步任务实现的实例,调试运行完好可用,是学习和理解异步任务的绝好例子。
异步任务类从服务器端下载图片,实现图文并茂的显示效果
异步任务网络下载图片一 Android 异步任务的使用与学习 网络连接与下载 网络获取数据 网络下载
Android利用异步任务AsyncTask 发送post请求并获取son字符串
Ansync Test 异步任务带有 详细注释
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
l Spring封装Job调度:当任务信息都持久化在DB中之后,我们需要将这些信息读取出来执行具体的业务逻辑操作,这里我们通过ScheduledExecutorFactoryBean来实现对任务的循环调度,比如说可采取每隔5min扫描一次待处理...
yii2 console 集成swoole 执行异步任务,例如注册邮件,发送短信 使用方法:http://blog.csdn.net/nextvary/article/details/79136058
实现浏览器访问基于workman的异步任务,主要解决了可以直接通过浏览器访问接口的问题。
AsyncTask下载大文件并可以取消异步任务
使用异步任务下载图片,非常适合异步任务入门学习,
Asp .Net Core项目中,非常轻量的异步任务管理模块
基于Android的AsyncTask异步任务, Android的AsyncTask将复杂的数据处理交由子线程, 将处理过程交由主线程处理
android异步任务从自己本机创建的服务器中下载图片能运行 在测试的时候 注意要创建一个名为myhttp的文本project 把自己的要下载的图片放到 myhttp的根目录下 最后在我给的例子中把ip改成自己本机的ip 然后运行就行