处理android原生活动中的主要命令

Handle main commands in android native activity

本文关键字:命令 活动中 android 原生 处理      更新时间:2023-10-16

在android原生活动中,您可以用自己的方法处理系统中的主要命令。我知道如何做到这一点,但我不知道我能处理所有的状态。我知道很少有像APP_CMD_SAVE_STATE、APP_CMD_INIT_WINDOW这样的状态。。。但这还不是全部。我在任何地方都找不到状态列表或android_native_app_glue.h头文件。有人能介绍我吗?或者用他们的号码写下事件列表,以及他们什么时候打来电话
谢谢

void CMDMethod(struct android_app* app, int32_t state)
{
   switch(state)
   {
     case APP_CMD_SAVE_STANE: //some code
                              break;
     //what can be next cases?
   }
}
void android_main(struct android_app* state)
{
   state->onAppCmd = CMDMethod;
}

这是在android_native_app_glue.h 中找到的枚举

enum {
    APP_CMD_INPUT_CHANGED,
    APP_CMD_INIT_WINDOW,
    APP_CMD_TERM_WINDOW,
    APP_CMD_WINDOW_RESIZED,
    APP_CMD_WINDOW_REDRAW_NEEDED,
    APP_CMD_CONTENT_RECT_CHANGED,
    APP_CMD_GAINED_FOCUS,
    APP_CMD_LOST_FOCUS,
    APP_CMD_CONFIG_CHANGED,
    APP_CMD_LOW_MEMORY,
    APP_CMD_START,
    APP_CMD_RESUME,
    APP_CMD_SAVE_STATE,
    APP_CMD_PAUSE,
    APP_CMD_STOP,
    APP_CMD_DESTROY,
};

APP_CMD_INPUT_CHANGED-来自主线程的命令:AInputQueue已更改。处理此命令后,android_app->inputQueue将更新为新队列(或NULL)。

APP_CMD_INIT_WINDOW-来自主线程的命令:一个新的ANativeWindow可以使用了。收到此命令后,android_app->window将包含新的窗口曲面。

APP_CMD_TERM_WINDOW-来自主线程的命令:需要终止现有的ANativeWindow。收到此命令后,android_app->window仍然包含现有窗口;在调用android_app_exec_cmd之后,它将被设置为NULL。

APP_CMD_WINDOW_RESIZED-来自主线程的命令:当前ANativeWindow的大小已调整。请用新尺寸重新绘制。

APP_CMD_WINDOW_REDRAW_NEEDED-来自主线程的命令:系统需要重新绘制当前的ANativeWindow。在将窗口交给android_app_exec_cmd()之前,您应该重新绘制窗口,以避免出现短暂的绘图故障。

APP_CMD_CONTENT_RECT_CHANGED-来自主线程的命令:窗口的内容区域已更改,例如显示或隐藏的软输入窗口。您可以在android_app::contentRect中找到新的内容rect。

APP_CMD_GAINED_FOCUS-来自主线程的命令:应用程序的活动窗口获得了输入焦点。

APP_CMD_LOST_FOCUS-来自主线程的命令:应用程序的活动窗口已失去输入焦点。

APP_CMD_CONFIG_CHANGED-来自主线程的命令:当前设备配置已更改。

APP_CMD_LOW_MEMORY-来自主线程的命令:系统内存不足。尽量减少你的内存使用。

APP_CMD_START-来自主线程的命令:应用程序的活动已启动。

APP_CMD_RESUME-来自主线程的命令:应用程序的活动已恢复。

APP_CMD_SAVE_STATE-来自主线程的命令:应用程序应该为自己生成一个新的保存状态,以便在需要时从以后恢复。如果您已经保存了状态,请使用malloc对其进行分配,并将其放置在android_app.savedState中,大小为android_app.savedStateSize。稍后将为您释放。

APP_CMD_PAUSE-来自主线程的命令:应用程序的活动已暂停。

APP_CMD_STOP-来自主线程的命令:应用程序的活动已停止。

APP_CMD_DESTROY-来自主线程的命令:正在销毁应用程序的活动,并等待应用程序线程清理并退出后再继续。

我想我在这本书中看到了一些关于这方面的内容http://www.packtpub.com/android-ndk-beginners-guide/book.但也可能是错误的。其中肯定有一章是关于创建一个完全本地的活动,循环处理所有这些状态。