Android 通过定时报警从主游戏循环调用方法的好方法是什么?

Android 通过定时报警从主游戏循环调用方法的好方法是什么?,android,android-service,libgdx,android-alarms,Android,Android Service,Libgdx,Android Alarms,我正在使用libgdx进行一个游戏,我希望能够让游戏调用一个更新方法,该方法现在设置为每15分钟调用一次。然而,这当然只在游戏本身打开时才起作用,我希望它在设备打开时起作用 到目前为止,我已经知道如何创建BroadcastReceiver并使用AlarmManager每15分钟调用一次,而且我知道如何设置它以在启动时添加我的警报。我唯一需要弄清楚的是如何在15分钟的时间间隔内安排好。9:30、9:45等 这是AndroidApplication的来源: 用于启动它的代码如下所示: public

我正在使用libgdx进行一个游戏,我希望能够让游戏调用一个更新方法,该方法现在设置为每15分钟调用一次。然而,这当然只在游戏本身打开时才起作用,我希望它在设备打开时起作用

到目前为止,我已经知道如何创建BroadcastReceiver并使用AlarmManager每15分钟调用一次,而且我知道如何设置它以在启动时添加我的警报。我唯一需要弄清楚的是如何在15分钟的时间间隔内安排好。9:30、9:45等

这是AndroidApplication的来源:

用于启动它的代码如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
    cfg.useGL20 = true;
    cfg.useAccelerometer = false;
    cfg.useCompass = false;

    initialize(new MainClass(), cfg);
}

环顾四周,找不到任何不调用onCreate而实际引用MainClass的方法。我假设这样做的最好方法是单独使用update方法的副本,并调用对相同数据的访问,但是我不知道如何在libgdx中做到这一点。

我认为您试图让您的游戏类做得太多了,更不用说,这将遇到问题时,你的警报火灾和游戏没有运行,所以没有任何东西可以收到更新的呼吁。如果您真正需要的是一种在跑步游戏循环之外定期更新游戏数据的方法,我会这样做:

创建AlarmManager,但不要尝试进入现有的游戏类并调用update,只需将更新存储到SharedStorage位置即可

在核心项目中创建一个定义StoredDataReader的新接口

在android项目中创建一个名为AndroidStoredDataReader的新类,该类实现StoredDataReader,并知道如何读取存储的更新位置

重载MainClass构造函数以接收StoredDataReader实例

在onCreate方法中,构建AndroidStoredDataReader类,然后将其传递给新的MainClass调用

在游戏的更新/渲染循环中,您将要求StoredDataReader提供所需的数据

如果将应用程序移植到GWT或desktop,您也可以采用相同的方法,在那里可以为每个平台实现StoredDataReader。GWTStoredData reader可能从浏览器本地存储读取,桌面版本可能从本地文件读取,等等