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。
我的申请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 错误?
是的,它可以是包私有的。查看
进一步解释:从应用程序继承允许您在没有主要方法的情况下启动应用程序(继承的class充当主要class)。如果您要使用它访问其他包,则它需要是 public。如果没有,你可以将其设置为package-private。