Android多线程编程
来源:互联网 发布:js代码反混淆工具 编辑:程序博客网 时间:2024/05/29 10:20
总认为这样的标题比较大,涉及面也比较广,鉴于自己的认知不够深入,所以没有写过类似的文章,今天谈一谈Android的多线程编程。一、Android是只有一个主线程的程序。我们知道,Android只有一个UI线程(主线程),每次更新UI都需要在主线程中,为了防止页面卡顿,我们需要对一些耗时操作全部放在子线程中,而由于线程开启后的不可控性,我们又需要线程池对线程的管理,这些不是本文的重点,就先不说。二、多线程的几种方式。Android中用到多线程实现方式分为4种,1、Activity.runOnUiThread(Runnable) 2、View.post(Runnable) ;View.postDelay(Runnable , long) 3、Handler 4、AsyncTask 三、4种多线程实现方式的总结。1、Activity.runOnUiThread(Runnable)
private void testRunOnUIThread(Activity activity){ activity.runOnUiThread(new Runnable() { @Override public void run() { } }); }
2、View.post(Runnable) 用于实时刷新 View.postDelay(Runnable , long) 于延迟刷新 long为延迟多少毫秒
mTextView.post(new Runnable() { @Override public void run() { mTextView.setText("post"); mTextView.setBackgroundColor(Color.RED); }});
//延迟1000毫秒(1秒)刷新private void method() { mTextView.setBackgroundColor(Color.BLACK); mTextView.postDelayed(new Runnable() { public void run() { mTextView.setVisibility(View.GONE); this.finish(); } }, 1000);}
3、Handler
先New一个handler对象,在根据Message的what标记进行分别并操作:
private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: btn.setText("更新UI"); break; } } };
使用时使用handler发送message:
Message message = new Message();message.what = 1;handler.sendMessage(message);
4、AsyncTask (异步)
class MyTask extends AsyncTask<String, String, String>{ @Override protected void onPreExecute() { super.onPreExecute(); Log.e("--------------", "开始前准备"); } @Override protected String doInBackground(String... params) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); Log.e("--------------", "更新进度"); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.e("------------","更新UI"); btn.setText("更新UI"); } }
然后调用的时候:
new MyTask().execute();//执行任务
总结:1.四种方式各自有各自应用的场景,没有优劣之分。
2.遇到问题可以查,可以看视频,可以问,不要畏惧,要求甚解。
阅读全文
0 0
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程
- Android 多线程编程(整理)
- Android 多线程编程
- Android 多线程编程
- android的多线程编程
- android多线程编程总结
- Android 多线程编程
- Android 多线程编程技术
- android多线程signalthreadpthreads编程
- Android多线程编程小结
- Android多线程编程
- swift-16进制颜色
- bzoj2718/1143 CTSC2008 祭祀 最长反链
- MyEclipse中的Servers如何显示在控制台
- H5移动端知识点总结
- js异步加载的三种方式
- Android多线程编程
- 绝对值c++题解
- python栈
- 访问外部设备寄存器的方法
- 有关进度条的一些写法
- SASS看这里
- Ant-style的匹配原则
- 电商系统
- 随便理解一下JVM