Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Callbacks aus native Code

Empfohlene Antworten

Veröffentlicht

Ich habe ein "kleines" Problem mit Callbacks vom native Code auf Java Methoden. Mein System sieht kurz abgerissen so aus:

Ich habe eine Klasse Service, welche einige native Methoden besitzt und eine Callback Methode (normale Java Methode).

Die native Methoden werden im native code (einer C++ dll) implementiert. Diese DLL besitzt mehrere Threads. Einer dieser Threads sollte nun sporadisch die Callback Methode aufrufen.

Ich habe dies folgendermassen versucht:

Bei JNI_Onload habe ich den Pointer auf die JavaVM gespeichert.

Sobald nun der Thread die Callbackmethode aufrufen sollte, holt er sich über die JVM das JNI Environment und über dieses dann die Objekt und Method Daten für den Aufruf.

Hier tritt nun der Fehler auf. Sobald ich ihrgend eine Methode von JNIEnv aufrufe kommt einen Access Violation Exception (bzw. die jvm wird vom System abgeschossen).

Der Code ist richtig implementiert. Ich habe dies ausprobiert, indem ich ihn in eine JNI native Methode gepackt habe und diese Methode von Java aufrief. Leider ist dies ja keine Option, da der Callback nicht von einem JNI Aufruf abhängig ist.

Ihrgend eine Idee wieso es nicht funktioniert? Eine Bestätigung, dass es nicht funktioniert würde mir schon helfen.

P.S. Ich weiss, dass ich das Problem mit Pullen oder anderen Wegen lösen kann. Mir geht es nur darum, wieso ein Callback nur funktioniert, wenn er aus einer JNI native Methode kommt.

P.P.S. Ach ja synchronisation kann auch kein Problem sein ... nur schon das holen des Monitors gibt eine Exception.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.