每日看点!android 异步处理
哔哩哔哩 2023-06-13 20:49:28

讲点简单的异步处理方法把,刷新页面,延迟刷新数据,定时任务有时候会用得到

android消息处理  最后面的delay 替换成毫秒值  (延时器)

new Handler().postDelayed(new Runnable(){    


【资料图】

public void run() {    

//execute the task    

}    

}, delay);   

推荐使用这个 delay 直接改成毫米就好 不用东一块西一块

new Handler().postDelayed(new Runnable(){    

public void run() {    

//execute the task    执行代码放这里 刷新页面也行 执行其他函数也可以

}    

}, delay);  

线程

new Thread(new Runnable(){  

public void run(){  

Thread.sleep(XXXX);  

handler.sendMessage();----告诉主线程执行任务  

}  

}).start();

延时器

TimerTask task = new TimerTask(){    

public void run(){     

//execute the task     

}    

};    

Timer timer = new Timer();  

timer.schedule(task, delay);  

这些方法不用导第三方包,直接复制用就好

-----------------分割线----------------------------------------

再推荐一个更好一点的方法,不过使用起来有点复杂 RXJAVA2

先要导包,注意新版旧版的函数代码都会有更新,如果有冲突的话注意查看最新写法

compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

implementation 'io.reactivex.rxjava2:rxjava:2.0.7'

implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

// 示例 动态判断权限代码

RxPermissions rxPermissions=new RxPermissions(this);

rxPermissions.request(

anifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.CALL_PHONE,Manifest.permission.INTERNET)

.subscribe(new Consumer<Boolean>() {

@Override

public void accept(Boolean aBoolean) throws Exception {

if (aBoolean){

//申请的权限全部允许

Toast.makeText(B_Activity.this, "允许了权限!", Toast.LENGTH_SHORT).show();

}else{

//只要有一个权限被拒绝,就会执行

Toast.makeText(B_Activity.this, "未授权权限,部分功能不能使用", Toast.LENGTH_SHORT).show();

}

}

});

-----------------------------我是分割线----------------------------------------

导包       这个是:rxjava:1的 两者区分很大 留意了,最新的估计还有变化

compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar'

compile 'io.reactivex:rxjava:1.1.+'

compile 'io.reactivex:rxandroid:1.1.+'

RxPermissions.getInstance(this)

.request(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA)  // 写入权限 和拍照权限

.subscribe(new Subscriber<Boolean>() {

@Override

public void onCompleted() {

}

@Override

public void onError(Throwable e) {

Log.e("权限错误", "e:" + e);

//                            Toast.makeText(mContext, "出现异常", Toast.LENGTH_SHORT).show();

showToast("请把存储权限打开");

}

@Override

public void onNext(Boolean aBoolean) {

if (!aBoolean) {

showToast("请把相机和存储权限打开");

return;

}

}

});

-----------------------------我是分割线----------------------------------------

还有这种,定时处理,可以设置次数 间隔时间 什么时候启动,记得添加这个就好  .observeOn(AndroidSchedulers.mainThread()) //切换线程 就这一个就够了

Observable.intervalRange(

0,//从1开始计数

3,//计时5次

0, //延时几秒开始

5, //每次间隔1

TimeUnit.SECONDS)//单位秒

.observeOn(AndroidSchedulers.mainThread()) //切换线程 就这一个就够了

.subscribe(new Consumer<Long>() {

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)

@Override

public void accept(Long aLong) throws Exception {

Log.e("Link", "定时链接:执行代码放在这里" + aLong);

}

}

});

-----------------------------我是分割线----------------------------------------

还有这种  定时任务,当然你可以在需要的时候把他停掉,可操作性大了一点

重新打开的话要重新执行一次就是了,里面onError也有异常处理,可以统一

放在那里处理

d1[0].dispose();//停止任务调用这个   停止循环任务

final Disposable[] d1 = new Disposable[1];

Observable.interval(0, 1, TimeUnit.SECONDS)// 这里参数可以调整,自己试着调就好

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Observer<Long>() {

@Override

public void onNext(Long aLong) {

Log.e("LoginActivity", "aLong:" + aLong + mac);

}

@Override

public void onSubscribe(Disposable d) {

d1[0] = d;

}

@Override

public void onError(Throwable e) {

}

@Override

public void onComplete() {

}

});

-----------------------------我是分割线----------------------------------------

RXJAVA是一个挺复杂的工具,这里就不讲原理了,直接用把,要做深层次功能的时候

就无法避免去多研究了,主要还是相互之间的关系把

每日看点!android 异步处理

2023-06-13

世界观天下!沾福卡怎么弄(如何得沾福卡简介介绍)

2023-06-13

月星国际公寓_对于月星国际公寓简单介绍-焦点信息

2023-06-13

主力盐湖投产,赣锋锂业迎转折

2023-06-13

水床是什么材料做的(水床是什么)_全球快播

2023-06-13

天天新消息丨重庆:直升机悬停百米高空为特高压线路带电消缺

2023-06-13

成都二批次集中供地首场,总成交金额94亿元

2023-06-13

全球快看:前4月完成交通固定资产投资1万亿元

2023-06-13

华附南海实验高中招生办电话(华附南海实验高中)

2023-06-13

手机对中学生的利和弊周记_手机对初中生的危害的六百字作文

2023-06-13

天天快消息!突发爆裂!水立方紧急通知……

2023-06-13

全球信息:零食工厂店:一样的味道 一半的价格

2023-06-13

北京海淀区尚丽外国语学校好不好?教学质量如何?

2023-06-13

谜踪之国全本txt下载_谜踪之国txt全集下载-当前滚动

2023-06-13

世界即时:2023年广西贵港市港南区特岗教师招聘50人工作实施方案

2023-06-13

最新:宁强县委常委出轨女干部意外牵出宋书记,身份被扒惹众怒|焦点快看

2023-06-13

尿素概念股(国内尿素概念股一览) 全球头条

2023-06-13

再次打脸,声称永不降价的蔚来,全系价格下调3万元

2023-06-13

2023年法国网球公开赛落幕 中国球员呈现均衡发展趋势|快看

2023-06-13

前5个月我国完成水利建设投资逾4100亿元 同比增长32.1%|天天热点评

2023-06-13