Kit*_* Ng 4 android private protected code-cleanup void
这是我的代码的一部分:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
受保护的 void onDestroy()用于清理程序。但是,我看到了一些示例项目,这些项目通常使用public void onDestroy()进行清理。
据我所知,在Java中,可以在包内访问受保护的方法,而在任何地方都可以访问公共方法。但是通常一个类都有其自己的onDestroy(),所以这意味着可以使用任何一个?在它们之间进行选择时,我有什么要担心的?
谢谢您的帮助。
在公共和受保护之间,功能没有区别。唯一的区别是,与public一起使用时,您可以onDestroy()从任何类中调用活动的实例。使用protected,您只能在同一包中的相同类或子类中调用。在onDestroy()我看来,将其公开是没有任何意义的。这实际上可能是不好的做法。
换句话说,除非您有非常特殊的理由使它可以被更多的类访问,否则请仅使用protected。
我认为您看到的公共实现只是一个错误/没有必要。如果要测试,只需将其更改回保护状态即可。如果没有编译器错误,则没有必要。