Android多线程处理之多线程用法大集合

【菜科解读】
handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,却没有执行start()方法,所以runnable走的还是UI线程。
1.如果像这样,是可以操作ui,但是run还是走在主线程,见打印出来的Log线程名字是main,说明是主线程。
这就是为什么可以直接在run方法里操作ui,因为它本质还是ui线程
handler.post(new Runnable(){
public void run(){
Log.e("当前线程:",Thread.currrentThread.getName());//这里打印de结果会是main
setTitle("哈哈");
}
});
2.通过HandlerThread获取到looper却是可以新起线程,但是在这里的run方法里操作ui是不可能的,但是这显然有个缺点,如果你执行多次post(r)方法其实走的还是HandlerThread线程。
假如你执行5次,n次,其实还是一次并且它们是串行的。
假如下载5张图片,你会看到图片是下完第一张,才会去下第二张。
实践证明,只有是拥有主线程looper的handler才可以操作ui,而在主线程操作ui可以在handler的handlerMessage()方法中操作Ui,也可以在handler的post(r)的run方法里操作Ui.
HandlerThread ht = new HandlerThread("handler thread");
ht.start();
handler = new Handler(ht.getLooper());
handler.post(new Runnable(){//这里run()方法其实还是在等ht.start()调用
public void run(){
Log.e("当前线程:",Thread.currrentThread.getName());//这里打印的会是handler thread
setTitle("哈哈");//这样必定报错
//android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
}
});
这样该怎么办呢,呵呵,可以无参构建一个handler。
用这个handler来发送消息和处理消息,用上面的handler来开启新线程。
mainHandler = new Handler(){
protecket void handlerMessage(Message msg){
setTitle("哈哈");//这样就不会报错啦
}
}
handler.post(new Runnable(){//这里run()方法其实还是在等ht.start()调用
public void run(){
Log.e("当前线程:",Thread.currrentThread.getName());//这里打印的会是handler thread
mainHandler.sendEmpetMessage();//用mainHandler来发送消息
//setTitle("哈哈");//这样必定报错
//android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
}
});
打印Log:
3.其实第2个方法显得麻烦而且低效,用了2个handler,一个用来发起线程,一个用于处理消息。
发起线程的handler必须拥有looper,所以还要实例化一个HanderThread;而处理消息的handler则不需要looper,因为它默认拥有主线程的looper,所以可以在这个handler处理ui。
其实可以只需要实例化一个handler,在主线程里构建一个无参的handler,然后由它发送和处理消息。
而创建线程的任务就不用handler了,直接用new Thread(r).start();然后在r的run()方法里面处理逻辑事务。
用这样的模式下载5张图片,你就可能不会看到图片一张挨着一张展示出来,可能第2张先出来,也可能同时出来3张,5条线程很随机的。
private void loadImagesByThread(final String url,final int id){//通过Thread来new 出多个线程 new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub Log.e("当前线程:", ""+Thread.currentThread().getName()); Drawable drawable = null; try { drawable = Drawable.createFromStream(new URL(url).openStream(), "image.gif"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message msg = mainHandler.obtainMessage(); msg.what = 2012; msg.arg1 = id; msg.obj = drawable; msg.sendToTarget(); } }).start(); }
打印Log:
1234在本页阅读全文 本文导航 第1页: 首页 第2页: AsyncTask 第3页: ExecutorServie线程池 第4页: 全部源码 Android,多,线程,处理,之多,用法,大,集合,
内蒙古呼和浩特灵活就业人员社保交多少钱
根据法规,这些参保者可以根据自身情况,在全省城镇单位就业人员平均工资的60%至300%范围内,挑选最适合自己的缴费基数。
那么,关于内蒙古呼和浩特2025年灵活就业人员的社保缴费标准是多少?以及每月需要缴纳的社保费用是多少,本文将为您提供最新的信息。
无雇工的个体工商户、未在用人单位参加养老保险的非全日制从业人员和其他灵活就业人员等以个人身份参加养老保险的人员,可在缴费基数上下限之间选择适当的缴费基数缴费,缴费比例为20%。
计算公式:月缴费金额=(上年全口径工资÷12)档次20%例如:四川某个人参保人员,选择60%档次缴费:则月缴费金额为(90220÷12)60%20%=902.2元;若选择300%档次缴费:则月缴费金额为(90220÷12)300%20%=4511元。
那么,内蒙古呼和浩特灵活就业人员社保交多少钱?买根据新社通app-社保缴费查询工具提供的2025社保缴费标准详情数据:据新社通app数据显示,内蒙古呼和浩特灵活就业养老缴费基数明细如下:养老缴费缴费基数为:4863元;个人缴费比例:20%;(注:本文数据仅供参考,具体以当地缴费标准为准)》点击新社通app社保计算器,了解你的社保缴费明细!新社通app数据所得,数据仅供参考。
昌吉打工人社保多少钱一个月
据新社通app数据显示,昌吉灵活就业养老保险的缴费基数为:4999元。
灵活就业人员参保缴费的比例为个人20%。
另外,需要注意的是,这些缴费标准可能会随着时间和方案的变化而调整。
建议查阅相关消息或咨询当地社保部门。
(注:本文数据仅供参考,具体以当地缴费标准为准)昌吉个体户社保多少钱一个月?根据新社通app-社保缴费查询工具提供的最新数据如下:2024年自治区职工基本养老保险个人缴费基数按照最低社平工资的60%,即(8332元60%=4999元)缴费基数为4999元,100%全额社平工资缴费基数为8332元,300%最高社平工资缴费基数为24996元。
即昌吉灵活就业人员基本养老缴费基数为4999,缴纳20%,金额为999.8元/月;基本医疗缴纳9%,缴费金额为499.91元/月;大额医疗缴纳0.5%,缴费金额为25元/月。
那么,灵活就业社保与职工社保险种有什么不一样:灵活就业社保:主要涵盖养老保险和医疗保险,部分地区可能还包括失业保险,但不包括工伤保险和生育保险。
职工社保:通常包括五险一金(养老保险、医疗保险、失业保险、工伤保险、生育保险和住房公积金),保险范围更全面。
温馨提示:本数据仅供参考!具体需以当地有关法规为准!