32 lines
No EOL
1.7 KiB
Markdown
32 lines
No EOL
1.7 KiB
Markdown
# makepad-android-state
|
|
|
|
This crate is responsible for holding Makepad's Android-specific context states.
|
|
It exists solely to allow external crates to access those Android states
|
|
without depending on the entirety of Makepad.
|
|
|
|
These two states are:
|
|
1. The JavaVM instance initialized by the JNI layer.
|
|
* This cannot be set by foreign code outside this crate,
|
|
as it is only ever set once during the lifetime of the app process.
|
|
2. The current Makepad Activity instance.
|
|
* This *can* be set by foreign code outside this crate,
|
|
as the underlying Android platform may tear down and reconstruct
|
|
the activity instance multiple times during the app's lifetime.
|
|
* However, for safety reasons, we only permit a single caller
|
|
to obtain the private "set_activity" function, which ensures that
|
|
only the internal Makepad framework can set the activity instance.
|
|
|
|
## Usage
|
|
> Note: you probably want to use the [`robius-android-env`] crate instead of using this crate directly, or an even higher-level crate that depends on [`robius-android-env`].
|
|
|
|
External users of this crate should only care about two functions:
|
|
1. [`get_java_vm()`]: returns a pointer to the JavaVM instance,
|
|
through which you can obtain the JNI environment.
|
|
2. [`get_activity()`]: returns a pointer to the current Makepad Activity instance.
|
|
|
|
All other functions are intended for Makepad-internal use only,
|
|
and will not be useful for external users.
|
|
|
|
[`robius-android-env`]: https://github.com/project-robius/robius-android-env
|
|
[`get_java_vm()`]: https://docs.rs/makepad-android-state/latest/makepad_android_state/fn.get_java_vm.html
|
|
[`get_activity()`]: https://docs.rs/makepad-android-state/latest/makepad_android_state/fn.get_activity.html |