Kann mir jemand erklären, was die genauen Bedeutungen der drei JniHandleOwnership Enum-Werte in Mono für Android sind? Was ist der Unterschied zwischen ihnen?JniHandleOwnership in Mono für Android
0
A
Antwort
2
Ich entschuldige mich, dass ich die Dokumentation der Klassenbibliothek noch nicht aktualisiert habe.
Die Binding Android Types Dokumentation gibt an, was die verschiedenen JniHandleOwnership
Werte im Wrapping with Java.Lang.Object Abschnitt bedeuten.
aktualisiert basierend auf Kommentare:
JniHandleOwnership.DoNotTransfer
soll, wenn nichts verwendet werden soll, mit demhandle
Parameter erfolgen. Dies sollte immer innerhalb connector methods verwendet werden.- sollte verwendet werden, wenn Sie eine lokale Referenz haben (z.
JniHandleOwnership.TransferGlobalRef
sollte verwendet werden, wenn Sie eine globale Referenz haben, und Sie wollen einen Wrapper Eigentum an der globalen Referenz zu übergeben:IntPtr grefFoo = JNIEnv.FindClass("Foo"); // FindClass() returns a gref var Foo = Java.Lang.Object.GetObject<Java.Lang.Class>(grefFoo, JniHandleOwnership.TransferGlobalRef);
Verwandte Themen
- 1. messagebox für android mono
- 2. Mono für Android LVL und
- 3. F # auf Mono für Android
- 4. Installieren Xamarin Mono für Android
- 5. Arbeiten mit Orientierungsänderung in Mono für Android
- 6. Wo ist Activity.InvalidateOptionsMenu() in Mono für Android?
- 7. Styling der Taste in Mono für Android
- 8. card.io Mono für Android (Xamarin Studio)
- 9. InvalidCastException auf ListItem Click (Mono für Android)
- 10. Mono für Android - Alle Aktivitäten in der Hochformat-Ausrichtung
- 11. Compliation Fehler bei Referenzierung iTextSharp Dll in Mono für Android
- 12. Google Maps API v2 in Mono für Android hinzufügen
- 13. jar-Bindung von ActionBarSherlock für Mono für Android
- 14. Schaltfläche Bildschirmwechsel in Android Mono mit Delegaten
- 15. Webhosting für Mono?
- 16. .NET Reflektor für Mono
- 17. Wie kann Xamarin für Android (Mono für Android) mit der nativen Android-Entwicklung verglichen werden?
- 18. mit Adapter zur Anzeige von ListView Mono für Android
- 19. Fehlt die Windows-Assembly im Mono für Android-Profil?
- 20. Die EditText-Klasse für Mono-Android wird erweitert.
- 21. Mono für Android: ListView Elemente löschen NotifyDataSet Geändert
- 22. Tastatur anzeigen, wenn TextView angeklickt wird Mono für Android
- 23. EditText nicht Fokus bekommen Mono Android
- 24. Beste Grafikbibliothek für .NET/Mono
- 25. Mit Mono für die Entwicklung in C++
- 26. Ist NetPeerTcpBinding für Mono verfügbar?
- 27. Entwicklungsressourcen für Mono auf PS3
- 28. Mono-kompatibles CMS für Linux
- 29. Mono-Alternative für benannten Mutex
- 30. WCF-Unterstützung in Mono
ich immer noch nicht ganz verstehen. Ist diese Definition richtig? DoNotTransfer: Ref manuell löschen | TransferLocalRef: Ref wurde im Konstruktor | gelöscht TransferGlobalRef: Ref in Destruktor/Finalizer | gelöscht Warum sollte ich die Referenz behalten wollen (d. H. Warum sollte ich TransferGlobalRef benutzen)? –
Warum möchten Sie 'TransferGlobalRef' verwenden? Weil Sie einen globalen Verweis haben und Sie den Besitz "übergeben" wollen, damit Sie sich darüber keine Gedanken machen müssen: IntPtr grefFoo = JNIEnv.FindClass ("Foo");/* JNIEnv.FindClass() gibt ein gref */var zurück Foo = Java.Lang.Object.GetObject (grefFoo, JniHandleOwnership.TransferGlobalRef); –
jonp
Diesen Link gefunden, der das Ganze ein wenig mehr verdeutlichen kann: http://www.netmite.com/android/mydroid/dalvik/docs/jni-tips.html#local_vs_global_references –