2

在 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;
}
4

2 回答 2

5

这是在 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 中找到新的内容矩形。

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

于 2016-09-12T02:02:06.203 回答
0

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

于 2012-08-05T21:43:19.147 回答