Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅对特定的活动类运行应用程序类?_Java_Android_Beacon - Fatal编程技术网

Java 如何仅对特定的活动类运行应用程序类?

Java 如何仅对特定的活动类运行应用程序类?,java,android,beacon,Java,Android,Beacon,在我的算法中,如何使Application.java只在主菜单中运行 就目前而言,MyApplication.java运行在每个活动上。我已经在我的主菜单上试过了,但没有成功 @Override protected void onResume() { super.onResume(); SystemRequirementsChecker.checkWithDefaultDialogs(this); beaconManager.connect

在我的算法中,如何使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());
    }

我强烈建议您再次访问,因为看起来您可以重温一些Android的核心概念。您还需要检查原因

作为示例,
应用程序
是用于维护全局应用程序状态的基类,并且在创建应用程序/包的流程时,在任何其他类之前实例化。因此,您不能只是禁用它

如果我的理解是正确的,您希望表示某种状态,这表示用户已经通过了所有初始要求(登录和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);
    }
  }
}
成功登录后,您可以在
main活动
中为每个
活动
实例创建基类


更好的选择是遵循体系结构模式,尤其是当你的应用程序比几个类都大的时候。如果你不能决定哪一个,你可以检查一下。另一个有用的模式/技术要考虑的是,对于一个库,例如,你可以利用子组件或范围来精确地实现你的分离。

基本上你不能,应用程序类在运行应用程序时创建(甚至在后台)。 这是github的概述,介绍ApplicationClass

Android中的应用程序类是包含所有其他组件(如活动和服务)的Android应用程序中的基类。在创建应用程序/包的流程时,应用程序类或应用程序类的任何子类在任何其他类之前实例化

完整描述


是的。我只想在主菜单和其他,除了登录和Imei检查信标测距检测。所以,我只是在每个活动中声明ConnectBeacon和disconnectBeacon?除了登录和imei,因为在我的应用程序类中发生的事情是,我正在遵循一个教程并以我的算法结束,我对自己的算法感到困惑。经过你的解释,我现在有了更清晰的看法。非常感谢。