Application class 可以包私有吗?

Can Application class be package-private?

我的申请class代码:

import android.app.Application;
import android.os.Process;

import com.squareup.leakcanary.LeakCanary;

public class SampleApplication extends Application {

    public SampleApplication() {
        super();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        //noinspection ConstantConditions
        if (LeakCanary.isInAnalyzerProcess(this)) {
            // This process is dedicated to LeakCanary for heap analysis.
            // You should not init your app in this process.
            return;
        }
        LeakCanary.install(this);
        // Normal app init code...
    }

    @Override
    public void onTerminate() {
        System.exit(0);
        Process.killProcess(Process.myPid());

        super.onTerminate();
    }
}

Android Studio 3.1 Canary 7 --> 分析 --> 检查代码 --> 确定:

声明访问可以弱化检查

1 条警告:SampleApplication 可以是包私有的

应用程序 class 可以是包私有的还是 lint 错误?

是的,它可以是包私有的。查看 question in Stack overflow and also read this 以了解如何控制对 class.

成员的访问

进一步解释:从应用程序继承允许您在没有主要方法的情况下启动应用程序(继承的class充当主要class)。如果您要使用它访问其他包,则它需要是 public。如果没有,你可以将其设置为package-private。