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-メインスレッドからのコマンド:ソフト入力ウィンドウの表示または非表示など、ウィンドウのコンテンツ領域が変更されました。新しいコンテンツrectは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.savedStateSizeのサイズでandroid_app.savedStateに配置します。は後で解放されます。

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 に答える