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

作者:小菜 更新时间:2025-03-16 点击数:
简介:handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,却没有执行start()方法,所以runnable走的还是U

【菜科解读】

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,多,线程,处理,之多,用法,大,集合,

个体户缴纳社保缴费多少钱一个月?社保缴费最新标准一览2025年4月20日

灵活就业社保可能只包括养老保险、医疗保险等基本险种。

据新社通app数据显示,临汾灵活就业养老保险缴费基数2024-2025年最新标准如下:2025年度,全省职工基本养老保险缴费基数上限为全口径工资的300%,即20564元/月;下限为全口径工资的60%,即4113元/月。

个人缴费比例:20%;(注:本文数据仅供参考,具体以当地缴费标准为准)临汾社保缴费多少钱?下表是2024-2025年临汾社保费用明细参考,根据新社通app-社保缴费查询工具提供的最新数据如下:临汾灵活就业养老保险缴费:月缴费基数在4113元至20564元之间,全年缴费金额最低为9871.20元,最高为49353.60元,参保人可以根据自身经济状况自由选择不同的缴费档次。

临汾灵活就业医疗保险缴费:(一)灵活就业在职人员须缴纳基本医疗保险费4096.56元(每月341.38元)、大额补充医疗保险费120元,共计4216.56元。

(二)灵活就业退休人员只缴纳大额补充医疗保险费120元。

(三)大额补充医疗保险费120元的缴纳方式与2023年度一致,即为按月划扣医保个人账户10元方式进行缴纳。

自由职业社保的缴费要求则相对灵活,可以根据自身情况选择缴费基数和缴费比例,但同样需要达到一定的缴费年限才能享受相应的待遇。

》》还不知道自己社保缴纳明细吗?点击新社通app社保计算器,查询所在城市社保缴费明细!新社通app数据所得,数据仅供参考。

2025年阳江职工社保卡一年交多少钱,阳江社保缴纳金额是多少?社保卡能异地重新申领吗?

本文主要介绍了阳江社保卡每月缴纳标准及社保卡的相关问题的回答,其中包括社保卡丢失可以异地重新申领吗,换新卡之后原卡的银行资金转到新卡吗等问题,详见下文。

社保卡一年交多少钱2024?在阳江上班的职工社保卡每个月交多少钱?社保的缴费档次,分为60%~300%之间都是可以选择的,当然如果说你是工作单位的在职员工,那么就可以通过自己的工作单位来缴纳社保,但是具体的社保缴费档次,是根据你本人工资的实际收入来确定的。

接下来随新社通app小编一起了解具体详情吧。

阳江社保交满15了能拿多少钱?阳江社保退休工资计算公式是怎么样的?(1)阳江养老金计算公式2025年在线计算器最新:每月到手的养老金=月基础养老金+月个人账户养老金(1)月基础养老金=(全省上年度所有职工的月平均工资+本人指数化月平均缴费工资)÷2缴费年限(2)个人账户养老金=个人账户的余额÷计发月数(50岁为195、55岁为170、60岁为139)可能有的小伙伴还不是太明白,小编来给大家举个栗子:假如小红,女,满60退休,退休前社保正好交满15年,共缴费1,10000元,其中个人账户的余额是47012元,而她所在地区的在职工资月平均是为5500元,她在当地平均工资的60%~300%之间,选择了60%作为缴费基数,那么她第一次领到的养老金是:(1)月基础养老金:(5500+55000.6)÷215%=660元(2)个人账户养老金:47012÷139=338元合计:660元+338元=998元所以,小红第一个月的养老金是998元。

假设60岁的小红还能领养老金17年,领取时间总计:1712个月=204个月。

那么,小红退休后17年内,总共能领取的养老金总额是:998204=203592元(温馨提示:本数据仅供参考,具体养老金要根据当地工资水平、缴费档次等的不同而有区别。

)  (2)社保卡每年交多少?以杨某职工社保为例:  由上图得知,杨某社保卡一年需要缴纳5081.04元,个人部分每月需要缴纳423.42元,若您想要了解明细点击新社通社保计算器,来了解一下明细吧。

提示:每个城市每年设定的最低缴纳基数(即劳动者月收入)各有差异,但总体上遵循着相似的原则,即按比例进行缴纳。

(3)阳江职工社保卡个人需要缴纳多少比例?详情如下阳江职工社保卡缴费比例参考如下:1.养老保险:个人缴费8%,单位缴费22%。

2.医疗保险:单位缴费10%,个人缴费2%+3元;3.失业保险:单位缴费1%,个人缴费0.2%;4.工伤保险:在0.5%~2%之间;5.生育保险:单位缴费0.8%,个人不交钱。

6.公积金:单位和个人各缴纳工资的12%。

加入收藏
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录