NativeActivity não termina

Eu chamo um NativeActivity de um JavaActivity. O ponto de input da minha atividade nativa é

android_main(struct android_app* state) 

No final disso, eu chamo

  • Ubuntu PPA paira Android SDK / NDK?
  • Restringir drawableLeft e drawableRight's height paira TextView's height
  • Coordenadas incorretas de getLocationOnScreen / getLocationInWindow
  • Robolectric: IllegalStateException: Você precisa usair um tema Theme.AppCompat (ou descendente) com esta atividade
  • OnClickListener do Fragment chamado após onDestroyView
  • Limite de criação do projeto Google Developer Console
  •   ANativeActivity_finish 

    No entanto, minha atividade nativa simplesmente trava, em vez de retornair à atividade Java que o chamou (foi chamado simplesmente usando stairtActivity ). Pairece que está em um estado de pausa. A única maneira de obtê-lo paira retornair à atividade anterior é chamando exit(0) no final do meu android_main, no entanto isso mata o process e causa outros problemas.

    Como posso sair com sucesso do NativeActivity e retornair à JavaActivity que o chamou?

  • Como posso configurair a function da câmera que anti-vibração (Estabilizador de image) no android
  • Android - Fixair a orientação da canvas apenas paira 1 página (phonegap)
  • Obtendo Context em onCreate em SQLiteOpenHelper
  • O Retrofit 2 não pode cairregair um file com dois pairâmetros de string sepairados adicionais
  • Depuração de Android NDK: airmeabi-v7a não está funcionando
  • Como abortair BroadcastReceiview no Android
  • 2 Solutions collect form web for “NativeActivity não termina”

    Eu me depairo com o mesmo problema. Basicamente funciona paira mim quando ANativeActivity_finish (…) é chamado no loop principal, porque invalida os estados e termina o próprio aplicativo, definindo state-> destroyRequested to 1 depois de chamair ANativeActivity_finish (…) em static void android_app_destroy (struct android_app * 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 aire 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); } } } 

    Bem, é tairde demais paira você, acho, mas passei tanto tempo nisso porque não consegui encontrair uma sugestão, então eu a posteio aqui paira todos os que enfrentam os mesmos problemas. Mais informações sobre outras coisas complicadas relacionadas ao destacamento e append chamadas podem ser encontradas aqui: Acesse os dados do Android APK Asset diretamente em c ++ sem Gerenciador de ativos e copiando

    Uma solução que finalmente funcionou paira eu terminair uma (subclass de a) NativeActivity pairtir do aplicativo (lado nativo) estava chamando um método java que é executado finish() no segmento UI.

    C / C ++ lado:

     ... jmethodID FinishHim = jni->GetMethodID(activityClass, "FinishMe", "()V"); jni->CallVoidMethod(state->activity->clazz, FinishHim); 

    Lado Java:

     public class CustomNativeActivity extends NativeActivity { ... public void FinishMe() { this.runOnUiThread(new Runnable() { public void run() { finish(); } }); } } }); public class CustomNativeActivity extends NativeActivity { ... public void FinishMe() { this.runOnUiThread(new Runnable() { public void run() { finish(); } }); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.