Timer rxjava-如何在创建后将计时器添加到observerable

Timer rxjava-如何在创建后将计时器添加到observerable,timer,rx-java,Timer,Rx Java,我想捕捉一个加载add的可观察对象,并在几秒钟后显示它。我打电话给这是多个地方,但在一个特定的地方,我希望它只运行几秒钟后已经过去。下面是我的方法,它返回一个可观察的: private Observable fullScreenAdObservable(){ // Create the interstitial. return Observable.create(new Observable.OnSubscribe<Object>() { @Override

我想捕捉一个加载add的可观察对象,并在几秒钟后显示它。我打电话给这是多个地方,但在一个特定的地方,我希望它只运行几秒钟后已经过去。下面是我的方法,它返回一个可观察的:

private Observable fullScreenAdObservable(){


    // Create the interstitial.
 return  Observable.create(new Observable.OnSubscribe<Object>() {
     @Override
     public void call(Subscriber<? super Object> subscriber) {
         interstitial = new InterstitialAd(main.this);
         interstitial.setAdUnitId(admob_publisherID);
         // Create ad request.
         AdRequest adRequest = new AdRequest.Builder().build();
         // Begin loading your interstitial.
         interstitial.loadAd(adRequest);
         interstitial.setAdListener(new AdListener() {
             @Override
             public void onAdLoaded() {
                 super.onAdLoaded();
                 interstitial.show();
             }
         });
     }
     });
 }

我希望计时器在3秒后运行Observable,但它不会,为什么?

使用延迟和计时器时,似乎存在一些调度问题。因此,在调用delaySubscription或timer之前,我必须明确地告诉我要订阅哪个线程。还修改了订阅服务器以侦听onNext,这样我可以向订阅服务器传递一个广告。然后,我在onNext中实际显示了该广告,作为延迟过后触发的广告

private Observable fullScreenAdObservable(){

    // Create the interstitial.
 return  Observable.create(new Observable.OnSubscribe<Object>() {
     @Override
     public void call(final Subscriber<? super Object> subscriber) {
         interstitial = new InterstitialAd(main.this);
         interstitial.setAdUnitId(admob_publisherID);
         // Create ad request.
         AdRequest adRequest = new AdRequest.Builder().build();
         // Begin loading your interstitial.
         interstitial.loadAd(adRequest);
         interstitial.setAdListener(new AdListener() {
             @Override
             public void onAdLoaded() {
                 super.onAdLoaded();
                 //emit a loaded ad
                 subscriber.onNext(interstitial);                     
             }
         });
     }
 });
 }
//并称之为:

 fullScreenAdObservable().subscribeOn(AndroidSchedulers.mainThread()).
            delaySubscription(13, TimeUnit.SECONDS).subscribe(new Action1<InterstitialAd>() {
        @Override
        public void call(InterstitialAd ad) {
            ad.show();
        }
    });

你查过延迟接线员了吗?timer是Observable上的静态方法,而不是实例方法,因此它不会订阅fullScreenAdObservable。
 fullScreenAdObservable().subscribeOn(AndroidSchedulers.mainThread()).
            delaySubscription(13, TimeUnit.SECONDS).subscribe(new Action1<InterstitialAd>() {
        @Override
        public void call(InterstitialAd ad) {
            ad.show();
        }
    });