android 多线程2:thread
来源:互联网 发布:呵呵网络用语什么意思 编辑:程序博客网 时间:2024/06/07 01:33
前面已经介绍了AsyncTask,现在介绍Thread。
继承Thread捕捉run()异常避免因为线程中出现异常导致程序崩溃
/**安全线程抽象类 * Description:安全线程抽象类,此线程类已经封闭run函数,添加抽象函数runs,后者只需将业务代码放入runs中即可,可有效防止在线程中出现未捕获的异常而导致程序崩溃 * @author 爱吃鱼的cat * @date 2013-1-18 */public abstract class Thread extends java.lang.Thread{/** * 线程 实际执行函数,已被封闭,请实现runs方法将业务处理相关动作放在里面 */@Overridepublic final void run(){try{runs();} catch (Exception e){Log.e("Thread","-----------------线程执行出现未捕获异常------------------");e.printStackTrace();}}/** * 线程执行函数,里面执行业务代码 */public abstract void runs();}
使用Thread创建子线程与界面交互有两种方式第一种使用runOnUiThread
new Thread(){@Overridepublic void runs(){DisplayMetrics dm = new DisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(dm); String strOpt = "手机屏幕分辨率为:" + dm.widthPixels + " × " + dm.heightPixels; runOnUiThread(new Runnable(){public void run(){mTextView.setText((String)extra);}});}}.start();
第二种方式是使用Handle,Handler来根据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。
@SuppressLint("ValidFragment")public static class PlaceholderFragment extends Fragment{private TextView mTextView;private Button mbtnGet;private MainActivity context;Handler myHandler = new Handler(){public void handleMessage(Message msg){switch (msg.what){case 0x01:mTextView.setText((String) msg.obj);break;}super.handleMessage(msg);}};public PlaceholderFragment() {super();}public PlaceholderFragment(MainActivity context){this.context = context;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){View rootView = inflater.inflate(R.layout.fragment_main, container,false); mbtnGet = (Button)rootView.findViewById(R.id.myButton) mTextView = (TextView) rootView.findViewById(R.id.myTextView); mbtnGet.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){new Thread(){@Overridepublic void runs(){DisplayMetrics dm = new DisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(dm); String strOpt = "手机屏幕分辨率为:" + dm.widthPixels + " × " +dm.heightPixels; Message message = new Message(); message.what = 0x01;message.obj = strOpt;myHandler.sendMessage(message); }}.start();}}); return rootView;}}
0 0
- android 多线程2:thread
- Android Thread多线程
- android 多线程Thread,Runnable,AsyncTask
- android多线程 : asynctask,thread,handler
- java多线程 Thread 2
- [Android]Thread线程入门3--多线程
- [Android]Thread线程入门4--多线程
- Android 多线程:使用Thread和Handler
- Android多线程编程之一:Thread+Handler
- android多线程编程(Thread,Handle,AsycTask)
- Android 多线程Thread和Runnable的区别
- 多线程Thread
- 多线程 Thread
- 多线程Thread
- 多线程-thread
- Thread-多线程
- 多线程Thread
- 多线程THread
- C语言及程序设计初步例程-32 输出小星星
- uiwebview didFailLoadWithError -999 error code
- Android特色开发之账户管理
- 数据库定义规范(可以借鉴,不是硬性标准)
- centos6下解决"ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.2.200' (113)"
- android 多线程2:thread
- MongoDB数据文件内部结构
- iOS中的多任务: Background Fetch,Silent Remote Notifications,Background Transfer Service
- C语言及程序设计初步例程-33 三种循环语句
- Android获取SDK版本号 判断版本号
- JS中setTimeout()的用法详解
- Android Tips:CursorAdapter 绑定 ListView后,List滚动CheckBox选中消失的问题
- 数据结构——二叉树
- poj 1009 Edge Detection (未完成)