简单实用RxJava设置安卓倒计时功能

版权声明:橘子丶 https://blog.csdn.net/qq_43573190/article/details/87890422
package com.example.kanghuwei.kanghuwei_0223;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.util.concurrent.TimeUnit;

import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.Flowable;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.tv_dao)
    TextView tvDao;//文字显示
    private Disposable mDisposable;//接触订阅
    private int i = 3;//倒计时默认时间

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //创建被观察者,interval轮询,每个一秒发送一次,执行onNext中方法
        Observable observable = Observable.interval(1, TimeUnit.SECONDS);
        observable.create(new ObservableOnSubscribe<Object>() {
            @Override
            public void subscribe(ObservableEmitter<Object> e) throws Exception {
                e.onNext(01);
            }
        });

        Observer observer = new Observer() {


            @Override
            public void onSubscribe(Disposable d) {
                mDisposable = d;
            }

            @Override
            public void onNext(Object o) {
                i--;
                tvDao.setText(i + "S");
                if (i == 0) {
                    if (mDisposable != null) {
                        mDisposable.dispose();
                    }
                    startActivity(new Intent(MainActivity.this, ShowActivity.class));
                    finish();
                }
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }

        };
        //线程切换
        observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(observer);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //页面跳转时取消订阅
        if (mDisposable != null) {
            mDisposable.dispose();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43573190/article/details/87890422
今日推荐