6

ここに私のコードの一部があります:

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 static final String adUnitId = "/7732/test_portal7/android_app1_test_portal7/top_banner_non_sdk_application_android_app1_test_portal7";
    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, adUnitId);

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

        layout.addView(adView);

        adView.loadAd(new AdRequest());

    };

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

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

    @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;
    }

}

protected void onDestroy() は、プログラムをクリーンアップするために使用されます。ただし、通常はpublic void onDestroy() を使用してクリーンアップを行うサンプル プロジェクトをいくつか見ました。

私が知っているように、Java では、保護されたメソッドはパッケージ内でアクセスでき、パブリックメソッドはどこからでもアクセスできます。でも普通はクラスに独自の onDestroy() があるので、どちらでも使えるということでしょうか?? 選ぶ際の注意点はありますか?

ご協力ありがとうございました。

4

3 に答える 3

6

public と protected の機能に違いはありません。onDestroy()唯一の違いは、 public を使用すると、任意のクラスからアクティビティのインスタンスを呼び出すことができることです。protected を使用すると、同じパッケージ内の同じクラスまたはサブクラスでのみ呼び出すことができます。onDestroy()公開することにあまり意味がないと思います。それは実際には悪い習慣かもしれません。

つまり、より多くのクラスからアクセスできるようにする特別な理由がない限り、protected を使用してください。

あなたが見た公開実装は単なる間違い/必要ではないと思います。テストしたい場合は、保護された状態に戻してください。コンパイル エラーがない場合は、必要ありません。

于 2012-12-04T19:18:53.963 に答える
2

onDestroyin Activityの定義は ですprotected onDestroy()。Activity のサブクラスでは、protected onDestroyorpublic onDestroyを記述でき、コンパイラは文句を言いません。より慣習的に受け入れられているプログラミング手法protected onDestroyは、メソッドの公開を最小限に抑えて を記述することです。ただし、書き込みpublic onDestroyによってバグが発生する可能性はほとんどありません。そのため、人々は何も考えずにそれを入れて忘れてしまいます。少なくとも、私はそうしています。

于 2012-12-04T19:26:13.763 に答える