Android的进程Hnadler与AsyncTask
来源:互联网 发布:网络高清图片大全 编辑:程序博客网 时间:2024/06/05 03:35
概述:
不能在非UI线程中操完成UI线程中的操作;
服务必须在manifests中注册。
代码
进程
完成一个倒计时
public class TestThread extends Activity { private Button mTimeCountButton; private int count; private static final int TIME_DESC = 0x23; private Handler mHandler; private Message message; //方法2:在Handler中完成// private Handler handler = new Handler() {// @Override// public void handleMessage(Message msg) {// switch (msg.what){// case TIME_DESC:// mTimeCountButton.setText(count+"秒");// count--;// try {// Thread.sleep(1000);// } catch (InterruptedException e) {// e.printStackTrace();// }// handler.sendEmptyMessage(TIME_DESC);// break;// default:// break;// }// }// }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_test_thread); message = new Message(); mTimeCountButton = (Button) findViewById(R.id.button_time_count); mTimeCountButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyThread thread = new MyThread(); thread.start(); //方法1:在监听函数中// count = 60;// handler.sendEmptyMessage(TIME_DESC);// new Thread(new Runnable() {// @Override// public void run() {// while (count>0){// Message msg = new Message();// msg.obj = count+"秒";// msg.what = TIME_DESC;// handler.sendMessage(msg);// try {// Thread.sleep(1000);// } catch (InterruptedException e) {// e.printStackTrace();// }// count--;// }// }// }).start(); } }); } //方法3:用Looper完成 class MyThread extends Thread { @Override public void run() { Looper.prepare(); mHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d("dd", "接受到主线程的消息"); } }; Looper.loop(); } }}
布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="倒计时"/> <Button android:id="@+id/button_time_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="60秒"/></LinearLayout>
AsyncTask
新建的Task继承于AsyncTask需要实现三个方法:
public class TestAsycTask extends Activity { private ProgressBar mProgressBar; private Button mButton; private int count; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_async_task); mProgressBar = (ProgressBar) findViewById(R.id.progressBar_asyc); mButton = (Button) findViewById(R.id.button_asyc); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyTask task = new MyTask(); task.execute(); } }); } class MyTask extends AsyncTask<String,String,String>{ @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); int count = Integer.parseInt(values[0]); mProgressBar.setProgress(count); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); mButton.setText(s); } @Override protected String doInBackground(String... params) { while(count<101){ count++; publishProgress(""+count); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } return "全部完成"; } }}
布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:id="@+id/progressBar_asyc" android:layout_gravity="center_horizontal"/> <Button android:id="@+id/button_asyc" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start Download"/></LinearLayout>
0 0
- Android的进程Hnadler与AsyncTask
- Hnadler的基本使用
- android进程与线程详解三:AsyncTask
- android进程与线程详解三:AsyncTask
- android进程与线程详解三:AsyncTask
- android进程与线程详解三:AsyncTask
- android进程与线程详解三:AsyncTask
- android 之 Hnadler 、Message 、Looper
- Android 学习笔记 10 Hnadler
- 【代码】Android中的进程与多线程的讲解(Handler和AsyncTask)
- Android中的进程与多线程的讲解(Handler和AsyncTask)
- Android中的进程与多线程的讲解(Handler和AsyncTask)
- Android Asynctask与Handler的比较,优缺点区别,Asynctask源码
- Android Asynctask与Handler的比较,优缺点区别,Asynctask源码
- AsyncTask多进程与多线程
- Android异步进程(AsyncTask)
- Android AsyncTask与handler(别人的文章)
- Android AsyncTask的使用介绍与示例
- 项目11.1分离各位数
- Uva-10480 Sabotage
- 【三分】HDU3756 Dome of Circus
- 欧几里德算法
- km算法(求二分图带权的最大匹配)
- Android的进程Hnadler与AsyncTask
- 最简单C语言的扫雷地图(不是游戏)
- spring MethodInterceptor 与 反射
- 深拷贝,浅拷贝
- JackJson反序列化为何一定需要TypeReference
- httpclient超时设置
- 详解温度传感器tmp275驱动
- Tachyon 0.7.1伪分布式集群安装与测试
- 关于算法的知识要点笔记