[JNI-NDK] Asynchroner Callback von C++ an Java = Mythos???

  • Hi, ich lese nun schon über eine Woche immer wieder Threads in verschiedensten Foren und finde keine nützliche Antwort zum Thema
    - weil ich befürchte das meine Fragestellung auf Englisch viel zu ungenau werden würde, schnapp ich mir lieber das deutsche Forum ;)


    kurz und knapp :
    Programmiere unter Win7x64 im Android Studio, NDK und mindest API 15(ICS) - Teste im Emulator auf API 15 und 21 (mit HAXM)


    Nach dem Start meiner App, des nativen Threads(JNIcall) usw bekomme ich, nach einer "unbekannten" Zeit, im nativen (C++) Code ein Event zurück und will daraufhin eine Java Methode aufrufen - nur bekomme ich keinen async Callback hin - wie er so schön genannt wird...
    nach ca. 40 Codeschnipseln aus allen Ecken des Netzes und etlichen Forenthreads die ins Leere laufen oder mit fehlerhaften Codes endeten, glaube Ich langsam - es ist eher ein Mythos das es bei irgendwem je funktionierte ||


    ein Funktionierendes Example wäre ein Traum.



    Beste grüße,
    Kyruss


    PS: Nicht hauen Bitte, wette es gibt ähnliche Threads :whistling:

  • Ich habe den Mythos gesehen und kann Dir sagen: Es gibt ihn wirklich. :)
    Allerdings zeige ich mich nicht sehr begeistert von der Idee, Dir komplett Deine Arbeit abzunehmen.


    Zeig mal her, was Du so hast, dann kann ich Dir sagen, was anders muss.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Danke für die Antwort, das hat mich dazu gebracht mich nochmal ein paar Stunden dahinter zu klemmen...
    Viel zu lang für die paar Zeilen, aber dann ist das halt mal so ;)


    Habe nun "die Lösung" gefunden und es hinbekommen, nach vielen vielen Seiten hat mich diese auf den richtigen Weg gebracht -> link


    nach etwas gefummel klappts nun so :


    Java Seite :



    ( zur Initialisierung wird register2() aufgerufen ) ---- diesen part werde Ich wohl noch ins JNI_OnLoad verpacken, falls mir der GC dann keine Probleme macht (?)



    CPP Seite :



    nein die log_prints sind nicht schön, aber ein wenig faules copy&paste muss sein beim testen ;)
    und die getEnvStat abfragen werde ich noch brauchen, evtl braucht Sie auch der nächste Leser ;)


    bin erstmal froh das es nun läuft und ich mich wieder um anderes kümmern kann, bin natürlich offen für jeden Wink mit´m Scheunentor :thumbup:


    Danke nochmal für den Anstoß :thumbup:

  • Sehr gut!
    Eine Kleinigkeit nur: Da C++ keine Garbage Collection hat, musst Du Dich natürlich selbst um das Speichermanagement kümmern.
    Dazu gehört auch, dass Du die via env->NewGlobalRef() angelegte globale Referenz irgendwann wieder weg räumst. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!