以下是我的代码的一部分:
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中,可以在包中访问 protected 方法,并且可以在任何地方访问 public 方法。但通常一个类有自己的onDestroy(),所以它是否意味着任何一个都可以使用?我在选择它们时需要关注的任何一点?
感谢您的帮助。
答案 0 :(得分:4)
在公共和受保护之间,功能没有区别。唯一的区别是,通过公开,您可以在任何类的活动实例上调用onDestroy()
。使用protected,您只能在同一个包中的同一个类或子类中调用。使用onDestroy()
我认为将其公之于众并不是很有意义。这可能实际上是不好的做法。
换句话说,只要使用protected,除非你有一个非常特殊的理由让它可以访问更多类。
我认为您看到的公开实施只是一个错误/没有必要。如果您想测试只需将其更改回受保护。如果没有编译器错误,则没有必要。
答案 1 :(得分:1)
活动中onDestroy
的定义为protected onDestroy()
。在Activity的子类中,您可以编写protected onDestroy
或public onDestroy
,编译器不会抱怨。传统上接受的编程实践越多,就是编写protected onDestroy
,尽量减少方法的暴露。但是,写public onDestroy
极不可能导致错误。所以人们不假思索地把它放进去,忘了它。至少,这就是我的工作。
答案 2 :(得分:0)
onDestroy()是活动的生命周期方法之一。要创建自己的活动,您应该扩展活动类。
在android的活动类中,所有生命周期方法都受到保护,因为Java的最佳实践建议它仅对派生类中的这些生命周期方法具有访问限制。
即使您使用public onDestroy()也不会造成任何问题,但是根据建议的最佳实践,我们应该对其进行保护。
要获得清晰的理解,请检查下面的链接。 https://www.baeldung.com/java-protected-access-modifier