12

5秒間隔ごとに広告をロードできるランナブルを確立しようとしています(もちろん、5秒は速すぎます。これはテスト目的です)

これが私のコードです:

package com.admobsdk_dfp_handler;

import com.google.ads.*;
import com.google.ads.doubleclick.*;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.RelativeLayout;

public class AdMobSDK_DFP_Handler extends Activity {
    private DfpAdView adView;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {

        public void run() {
        adView.loadAd(new AdRequest());
        handler.postDelayed(this, 5000);
    }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ad_mob_sdk__dfp__handler);

        adView = new DfpAdView(
                this,
                AdSize.BANNER,
                AD_UNIT_ID);

        RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout);

        layout.addView(adView);

        adView.loadAd(new AdRequest());

        handler.postDelayed(runnable, 5000);


    };

    @Override
    protected void onDestroy() {
        handler.removeCallbacks(runnable);
        super.onDestroy();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_ad_mob_sdk__dfp__handler,
                menu);
        return true;
    }

}

ホームボタンを押してアプリをバックグラウンドに隠すと、ランナブルは 5 秒間隔で広告を読み込み続けます。

アプリがバックグラウンドに隠されているときに実行可能を停止する方法はありますか? どうもありがとう。

4

3 に答える 3

36

単純にonPause()

アクティビティがバックグラウンドに移行するときに、アクティビティ ライフサイクルの一部として呼び出されますが、(まだ) 強制終了されていません。

@Override
protected void onPause() {
     handler.removeCallbacks(runnable);
     super.onPause();
}

オプション

そのランナブルを再開したい場合。onResume()コールバックをオーバーライドするだけ

@Override
protected void onResume()
{
      handler.postDelayed(runnable, 5000);
      super.onResume();
}

handler.postDelayed(runnable, 5000);中も外しますonCreate()

于 2012-11-26T07:19:00.510 に答える
2

onPause() onStop()そこに置くことができる機能handler.removeCallbacks(runnable);

あなたはここからより多くの情報を得ることができますアクティビティライフサークルを見てください

于 2012-11-26T07:24:48.440 に答える
0

onPause() は、アプリケーションがバックグラウンドに移行するときに呼び出されます。onPause() でランナブルを削除

protected void onPause() {
     handler.removeCallbacks(runnable);
     super.onPause();
}
于 2012-11-26T07:21:32.387 に答える