与我的算法一样,如何使Application.java仅在主菜单中运行 至于现在,MyApplication.java会在每个活动上运行。我已经在主菜单上尝试了这个,但没有用。
@Override
protected void onResume() {
super.onResume();
SystemRequirementsChecker.checkWithDefaultDialogs(this);
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
beaconManager.startRanging(region);
}
});
}
@Override
protected void onPause() {
super.onPause();
beaconManager.stopRanging(region);
finish();
}
@Override
protected void onStart() {
super.onStart();
beaconManager.stopRanging(region);
}
@Override
public void onStop(){
super.onStop();
beaconManager.stopMonitoring(region);
beaconManager.stopRanging(region);
finish();
System.runFinalizersOnExit(true);
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());
}
答案 0 :(得分:2)
我强烈建议您重温Android app fundamentals和The Lifecycle Activity,因为看起来您可以了解一些核心Android概念。您还想检查exiting apps on Android is frowned upon。
的原因作为docs say,Application
是用于维护全局应用程序状态的基类,并且在创建应用程序/包的进程之前在任何其他类之前实例化。因此,您不能只是禁用它。
如果我的理解是正确的,您希望表示各种类型的州,这表示用户已通过所有初始要求(登录和IMEI检查),现在可以完全访问应用功能。忽略我们可以使用的当代工具,一种非常基本的方法可以是提供主菜单功能的简单类,例如:
class MainMenu {
private final Context appContext;
private final BeaconManager manager;
public MainMenu(@NotNull Context context) {
appContext = context.getApplicationContext();
manager = BeaconManager.getBeaconManager(context);
}
public void connectBeacon(@NotNull Callback callback) {
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override
public void onServiceReady() {
beaconManager.startRanging(region);
callback.onSuccess(region);
}
});
}
public void disconnectBeacon(@NotNull Region region) {
if (manager.isRanging(region)) {
beaconManager.stopRanging(region);
}
}
}
成功登录后,您在MainMenuActivity
中创建的或每个Activity
实例的基类。
更好的选择,特别是如果您的应用程序大于几个类,则遵循架构模式。如果您无法确定哪个,可以查看Android Architecture Components。要考虑的另一个有用的模式/技术是Dependency Injection - 使用诸如Dagger2之类的库,您可以利用子组件或范围来实现完全分离你好吗。
答案 1 :(得分:1)
基本上你不能在运行应用程序时创建Application Class(即使在backgrand中)。
这是github的概述,介绍ApplicationClass
Android中的Application类是Android应用程序中的基类,包含所有其他组件,如活动和服务。在创建应用程序/包的进程时,Application类或Application类的任何子类在任何其他类之前被实例化。
完整描述