私は同じ問題に遭遇します。ANativeActivity_finish(..) がメインループで呼び出されたときに基本的に機能します。これは、状態を無効にし、 static void android_app_destroy(struct android_app で ANativeActivity_finish(..) を呼び出した後に state->destroyRequested を 1 に設定することでアプリ自体を終了するためです。 * android_app) (android_native_app_glue.c C:173)。
void android_main(struct android_app* state)
{
// Attach current state if needed
state->activity->vm->AttachCurrentThread(&state->activity->env, NULL);
...
// our main loop for the app. Will only return once the game is really finished.
while (true) {
...
while ((ident=ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events,(void**)&source)) >= 0) {
...
// Check if we are exiting. Which is the case once we called ANativeActivity_finish(state->activity);
if (state->destroyRequested != 0)
{
// Quit our app stuff herehere
// detatch from current thread (if we have attached in the beginning)
state->activity->vm->DetachCurrentThread();
// return the main, so we get back to our java activity which calle the nativeactivity
return;
}
}
if (engine.animating)
{
// animation stuff here
}
// if our app told us to finish
if(Closed)
{
ANativeActivity_finish(state->activity);
}
}
}
あなたには遅すぎると思いますが、問題が見つからなかったので多くの時間を費やしたので、同じ問題に遭遇したすべての人のためにここに投稿します. detach および attach 呼び出しに関連するその他のトリッキーな内容については、こちらを参照してください。Asset Manager やコピーを使用せずに、C++ で直接 Android APK アセット データにアクセスします。