class MyAsnycTask extends AsyncTask<String,Integer,Object> { @Override protected void onPreExecute() { super.onPreExecute(); dialog = new ProgressDialog(MainActivity.this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMax(100); dialog.setTitle("提示"); dialog.setMessage("当前正在玩命加载中,请稍后 ... "); dialog.setIcon(android.R.drawable.ic_menu_info_details); dialog.setCancelable(false); dialog.show(); } @Override protected Object doInBackground(String... params) { String str = params[0]; for (int i = 0; i < 10; i ++) { SystemClock.sleep(1000); publishProgress((i + 1) * 10); MyLog.d(TAG,"sleep 了 " + i + " 秒"); } return str + "_玩命加载成功"; } @Override protected void onPostExecute(Object result) { super.onPostExecute(result); Toast.makeText(getApplicationContext(),(String) result,1).show(); dialog.cancel(); dialog.dismiss(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); int position = values[0]; dialog.setProgress(position); } }
String url = "http://192.168.1.100:8080/myserver.do"; new MyAsnycTask().execute(url);
说明 模拟数据
package com.itheima24.know.service; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.content.Context; import android.os.AsyncTask; import com.itheima24.know.R; import com.itheima24.know.domain.Answer; import com.itheima24.know.ui.UpdateView; public class MyAsyncTask { private Context context; private UpdateView updateView; public MyAsyncTask(Context context,UpdateView updateView){ this.context = context; this.updateView = updateView; } /** * 模拟在服务端请求数据 * @param text */ public void queryAnswer(String text){ new QueryAnswerAsyncTask().execute(text); } /** *AsyncTask异步处理耗时任务 效率更高 因为有一个线程池 所以工作效率高 有可能对资源的消耗比较大 * AsyncTask<Params,Progress,Result> * Params:入口参数,比如去server端的地址,如果是String类型的URL地址,那么params参数就写为String * Progress:更新进度条的时候进度单位类型,一般更新进度条是int单位,Integer * Result:最终拿到结果的数据类型 假如说 从服务端接收到的数据 封装到了Person对象 * 那么Result写成Person */ private class QueryAnswerAsyncTask extends AsyncTask<String,Void,Answer>{ /** * 主线程运行 * 该方法运行在主线程,一般用来给用户一个对话框提示 */ @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } /** * 主线程运行 * 获取结果 该方法运行在主线程,可以用来取消在onPreExecute方法中显示的对话框 * 一般在这个方法中更新UI * 注意:Result参数与doInBackground的返回值类型和onPostExecute * 的参数类型必须保持一致 */ @Override protected void onPostExecute(Answer result) { super.onPostExecute(result); Random random = new Random(); try { Thread.sleep(random.nextInt(4)); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(result!=null){ int type = result.getAnswerType(); if(type == Answer.JOKE_ANSWER){ updateView.updateSheView(result.getJokeAnswer()); }else if (type == Answer.MM_ANSWER) { String[] mmArr = context.getResources().getStringArray(R.array.mm); Random r = new Random(); int index = r.nextInt(mmArr.length); updateView.updateMMView(mmArr[index],result.getMmAnswer()); } } } /** * 子线程中运行 * 该方法运行在子线程 * 用来进行耗时的处理,一般用来请求server,或者需要 * 长时间处理的任务 */ @Override protected Answer doInBackground(String... params) { String str = params[0]; Answer answer = getAnswer(str); return answer; } } private Answer getAnswer(String str) { if(str.contains("笑话")){ String[] jokeArray = context.getResources().getStringArray(R.array.joke); Random random = new Random(); int index = random.nextInt(jokeArray.length); Answer answer = new Answer(); String joke = jokeArray[index]; answer.setAnswerType(Answer.JOKE_ANSWER); answer.setJokeAnswer(joke); return answer; }else if(str.contains("美女") || str.contains("妹子")){ int resId = randomMM(); Answer answer = new Answer(); answer.setAnswerType(Answer.MM_ANSWER); answer.setMmAnswer(resId); return answer; } return null; } /** * 随机获取一个美女 * @return */ private int randomMM() { List<Integer> mmList = new ArrayList<Integer>(); mmList.add(R.drawable.mm0); mmList.add(R.drawable.mm1); mmList.add(R.drawable.mm2); mmList.add(R.drawable.mm3); mmList.add(R.drawable.mm4); mmList.add(R.drawable.mm5); mmList.add(R.drawable.mm6); mmList.add(R.drawable.mm7); mmList.add(R.drawable.mm8); mmList.add(R.drawable.mm9); mmList.add(R.drawable.mm10); mmList.add(R.drawable.mm11); mmList.add(R.drawable.mm12); mmList.add(R.drawable.mm13); mmList.add(R.drawable.mm14); mmList.add(R.drawable.mm15); mmList.add(R.drawable.mm16); mmList.add(R.drawable.mm17); mmList.add(R.drawable.mm18); mmList.add(R.drawable.mm19); mmList.add(R.drawable.mm20); mmList.add(R.drawable.mm21); mmList.add(R.drawable.mm22); mmList.add(R.drawable.mm23); Random r = new Random(); int index = r.nextInt(mmList.size()); int resId = mmList.get(index); return resId; } }
values里面的arrays.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 问候 --> <string-array name="hello"> <item>你好,%1$s!</item> <item>%1$s我是你的助手,有什么想问我的吗?</item> <item>很高兴为您服务,%1$s!</item> <item>%1$s,我想死你了!</item> </string-array> <string-array name="hello2"> <item>%1$s!你好,多谢关心!</item> <item>你好,%1$s,我是你的助手,有什么想问我的吗?</item> <item>我很好,你呢,%1$s!</item> <item>%1$s,我很好啊!</item> </string-array> <!-- 笑话类 --> <string-array name="joke"> <item>家住十楼,这两天电梯坏了维修中。周末懒得下楼,就叫肯德基外卖。结果连续两天来的是同一个大哥。第二天他气喘吁吁地说:“哥,明天别点肯德基了,麦当劳出新品了,你不试试?”</item> <item>领导开会,开了很长时间,众人疲惫不堪,突然听到领导说了一句,下面我讲最后一点,众人都精神起来。然后,领导又说了一句,"这一点我分三小点来讲。"众人......晕倒。 </item> <item>今儿我请客!大家一定要赏光啊,咱们吃:自来水泡馍,馍自带。</item> <item>睡觉前,我给儿子讲故事说:“有只小鸟很孝敬老人,它妈妈老了后,它就捉小虫子给妈妈吃。要是我老了,你怎么做呢?”儿子认真地说:“我捉大虫子给妈妈吃!”</item> <item>考完试以后,我突然对人生失去了信心。第二天去医院看病,医生说:“对不起,你这个病,当初考试划重点时老师说不是重点,我看不了。”</item> <item>妈妈:“今天在学校里学了不少东西吧!”儿子:“不多,明天还得去。”</item> <item>晚上,妈妈在屋里对在客厅的儿子喊道:“儿子,你去厨房看下,看灯关上了没有。”儿子去看了看,回来说:“妈妈,厨房里黑咕隆咚的,什么也看不到。”</item> <item>爸爸:“我要寄两封信,你去帮我买两个信封、两张邮票。”儿子拿了钱就去了,过会儿回来后,却只拿了一个信封、一张邮票。爸爸问:“你怎么都买了一个呢。”儿子:“你把那两封信都装到一个信封里,只用贴一张邮票,多省钱啊!”</item> </string-array> <string-array name="tang_poetry"> <item> 故人西辞黄鹤楼,\n烟花三月下扬州。\n孤帆远影碧空尽,\n惟见长江天际流。 </item> <item> 床前明月光,\n疑是地上霜,\n举头望明月,\n低头思故乡。 </item> <item> 朝辞白帝彩云间,\n千里江陵一日还。\n两岸猿声啼不住,\n轻舟已过万重山。 </item> <item> 白日依山尽,\n黄河入海流。\n欲穷千里目,\n更上一层楼。 </item> <item> 黄河远上白云间,\n一片孤城万仞山。\n羌笛何须怨杨柳,\n春风不度玉门关。 </item> </string-array> <string-array name="mm_path"> <!-- 以下图片地址都是假的 --> <item> http://image.baidu.com/1231231.jpg//图片地址假 </item> <item> http://image.baidu.com/1231231.jpg </item> <item> http://image.baidu.com/1231231.jpg </item> <item> http://image.baidu.com/1231231.jpg </item> <item> http://image.baidu.com/1231231.jpg </item> </string-array> <string-array name="mm"> <item>看这张如何?</item> <item>好吧,你看这张怎么样 . . .</item> <item>怎么都爱让我找美女?</item> <item>行,给你看</item> <item>这个怎么样,正不正?</item> <item>我觉得这个最好看了</item> </string-array> <string-array name="unknow"> <item>干嘛问人家这么难的问题?不会啊!</item> <item>这个问题太难了,我不知道该怎么回答!</item> <item>你是在考我的智商吗?问这么难的问题。</item> <item>不会,不要欺负人。</item> <item>哎呀,这个问题好难啊!</item> <item>真的好难啊,你真坏。</item> </string-array> <!-- <string-array name="server_error"> <item>出错了,服务器故障!</item> <item>亲,服务器不给力,什么答案也没告诉我。</item> <item>服务器拒绝连接</item> <item>服务器出异常了,不过10000知道不会挂掉,再试一次。</item> </string-array> --> <string-array name="net_error"> <item>出错了,%1$s,网络异常!</item> <item>连接超时,%1$s,检查下网络吧,我已经很努力了</item> <item>您网络不给力啊,%1$s。</item> <item>网络出错了,不过10000知道不会挂掉,再试一次。</item> </string-array> <string-array name="json_error"> <item>%1$s,数据异常。</item> <item>对不起,%1$s,数据解析异常。</item> <item>数据出错了,不过10000知道不会挂掉,再试一次。</item> </string-array> </resources>原文链接:https://www.f2er.com/xml/296691.html