Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.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
在android本机活动中处理主要命令_Android_C++_C_Native Code_Native Activity - Fatal编程技术网

在android本机活动中处理主要命令

在android本机活动中处理主要命令,android,c++,c,native-code,native-activity,Android,C++,C,Native Code,Native Activity,在android原生活动中,您可以用自己的方法处理来自系统的主要命令。我知道如何做到这一点,但我不知道我能处理的所有状态。我知道像APP\u CMD\u SAVE\u STATE、APP\u CMD\u INIT\u WINDOW这样的状态很少。。。但这还不是全部。我在任何地方都找不到州列表或android_native_app_glue.h头文件。有人能介绍我或写下他们的号码以及他们什么时候被叫到的活动清单吗?谢谢 void CMDMethod(struct android_app* app,

在android原生活动中,您可以用自己的方法处理来自系统的主要命令。我知道如何做到这一点,但我不知道我能处理的所有状态。我知道像APP\u CMD\u SAVE\u STATE、APP\u CMD\u INIT\u 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后,它将被设置为空

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

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

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

APP_CMD_获得_焦点-来自主线程的命令:应用程序的活动窗口已获得输入焦点

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-来自主线程的命令:正在销毁应用程序的活动,并等待应用程序线程清理并退出,然后再继续。

Wow。4年后,我终于有了答案。