最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

android 異步處理

2023-06-13 21:15 作者:翼618  | 我要投稿

講點簡單的異步處理方法把,刷新頁面,延遲刷新數(shù)據(jù),定時任務有時候會用得到


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? ? 執(zhí)行代碼放這里 刷新頁面也行 執(zhí)行其他函數(shù)也可以

? ? }? ??

?},?delay);??



線程

new Thread(new Runnable(){??

? ?public void run(){??

? ? ? ? Thread.sleep(XXXX);??

? ? ? ? handler.sendMessage();----告訴主線程執(zhí)行任務??

? ? ? ? }??

? ? }).start();


延時器

?TimerTask task = new TimerTask(){? ??

? ? ?public void run(){? ? ?

? ? ?//execute the task? ? ?

? ? ?}? ??

};? ??


?Timer timer = new Timer();??

? timer.schedule(task, delay);??


這些方法不用導第三方包,直接復制用就好

-----------------分割線----------------------------------------

再推薦一個更好一點的方法,不過使用起來有點復雜?RXJAVA2

? ?

? ? 先要導包,注意新版舊版的函數(shù)代碼都會有更新,如果有沖突的話注意查看最新寫法

? ? 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'


// 示例 動態(tài)判斷權(quán)限代碼

? ? 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){

? ? ? ? ? ? ? ? ? ? //申請的權(quán)限全部允許

? ? ? ? ? ? ? ? ? ? Toast.makeText(B_Activity.this, "允許了權(quán)限!", Toast.LENGTH_SHORT).show();

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? //只要有一個權(quán)限被拒絕,就會執(zhí)行

? ? ? ? ? ? ? ? ? ? Toast.makeText(B_Activity.this, "未授權(quán)權(quán)限,部分功能不能使用", Toast.LENGTH_SHORT).show();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? });


-----------------------------我是分割線----------------------------------------

導包? ?? ? 這個是:rxjava:1的 兩者區(qū)分很大 留意了,最新的估計還有變化

? ? 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)? // 寫入權(quán)限 和拍照權(quán)限

? ? ? ? ? ? ? ? .subscribe(new Subscriber<Boolean>() {

? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void onCompleted() {

? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void onError(Throwable e) {

? ? ? ? ? ? ? ? ? ? ? ? Log.e("權(quán)限錯誤", "e:" + e);

//? ? ? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(mContext, "出現(xiàn)異常", Toast.LENGTH_SHORT).show();

? ? ? ? ? ? ? ? ? ? ? ? showToast("請把存儲權(quán)限打開");

? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void onNext(Boolean aBoolean) {

? ? ? ? ? ? ? ? ? ? ? ? if (!aBoolean) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? showToast("請把相機和存儲權(quán)限打開");

? ? ? ? ? ? ? ? ? ? ? ? ? ? return;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? });

-----------------------------我是分割線----------------------------------------

還有這種,定時處理,可以設置次數(shù) 間隔時間 什么時候啟動,記得添加這個就好? .observeOn(AndroidSchedulers.mainThread())?//切換線程 就這一個就夠了

? ? ? ? Observable.intervalRange(

? ? ? ? ? ? ? ? 0,//從1開始計數(shù)

? ? ? ? ? ? ? ? 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", "定時鏈接:執(zhí)行代碼放在這里" + aLong);

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? });



-----------------------------我是分割線----------------------------------------

還有這種? 定時任務,當然你可以在需要的時候把他停掉,可操作性大了一點

重新打開的話要重新執(zhí)行一次就是了,里面onError也有異常處理,可以統(tǒng)一

放在那里處理


?d1[0].dispose();//停止任務調(diào)用這個???停止循環(huán)任務



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


Observable.interval(0, 1, TimeUnit.SECONDS)// 這里參數(shù)可以調(diào)整,自己試著調(diào)就好

? ? ? ? ? ? ? ? .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 異步處理的評論 (共 條)

分享到微博請遵守國家法律
镇平县| 织金县| 涿州市| 万荣县| 永新县| 长治县| 财经| 宣威市| 渭源县| 巴南区| 苍溪县| 红原县| 南陵县| 濮阳市| 陆丰市| 固原市| 石渠县| 武鸣县| 湘西| 牡丹江市| 伊川县| 廉江市| 高陵县| 扎鲁特旗| 凤阳县| 商丘市| 昔阳县| 青河县| 莱州市| 左贡县| 建宁县| 胶南市| 五河县| 永昌县| 浮山县| 济南市| 武宁县| 灵丘县| 大竹县| 遵义市| 临洮县|