ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – “public void onDestroy()”和“protected void onDestroy()”之间的区别?

2019-09-01 13:27:49  阅读:168  来源: 互联网

标签:code-cleanup android void private protected


这是我的代码的一部分:

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(),所以它是否意味着任何一个都可以使用?在选择它们时我必须关注的任何一点?

谢谢您的帮助.

解决方法:

在公共和受保护之间,功能没有区别.唯一的区别是,对于public,您可以在任何类的活动实例上调用onDestroy().使用protected,您只能在同一个包中的同一个类或子类中调用.使用onDestroy(),我觉得将它公之于众都没有多大意义.这实际上可能是不好的做法.

换句话说,只要使用protected,除非你有一个非常特殊的理由让它可以访问更多的类.

我认为你看到的公开实施只是一个错误/没有必要.如果您想测试只需将其更改回受保护.如果没有编译器错误,则没有必要.

标签:code-cleanup,android,void,private,protected
来源: https://codeday.me/bug/20190901/1783657.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有