Skip to content

Latest commit

 

History

History
124 lines (95 loc) · 8.54 KB

File metadata and controls

124 lines (95 loc) · 8.54 KB

ClojureActivity Delegate Functions

ClojureActivity automatically bridges Android Activity callbacks into a Clojure namespace. Every function below is optional -- define only what you need.

Namespace Convention

The Clojure namespace is derived from the Java subclass name:

com.example.foo.MainActivity  ->  com.example.foo.main-activity
com.example.foo.NekoActivity  ->  com.example.foo.neko-activity

Override getClojureNamespace() in Java to use a custom namespace.

Return Values

Functions marked returns boolean use Clojure truthiness: nil and false are falsy, everything else is truthy. When such a function is not defined, the default super behavior is used.


Lifecycle

Clojure fn Java method Description
(on-create [activity ^Bundle bundle]) onCreate Activity created. If absent, falls back to make-ui.
(on-restart [activity]) onRestart Activity restarting after stop (not destroyed).
(on-start [activity]) onStart Activity becoming visible.
(on-resume [activity]) onResume Activity in foreground, interactive.
(on-pause [activity]) onPause Activity losing focus.
(on-stop [activity]) onStop Activity no longer visible.
(on-destroy [activity]) onDestroy Activity being destroyed.
(on-save-instance-state [activity ^Bundle out-state]) onSaveInstanceState Save transient state before destruction.
(on-restore-instance-state [activity ^Bundle saved-state]) onRestoreInstanceState Restore state from bundle.
(make-ui [activity]) -- Return a View; used by reloadUi() and as on-create fallback.

Intent & Navigation

Clojure fn Java method Description
(on-activity-result [activity request-code result-code ^Intent data]) onActivityResult Result from startActivityForResult.
(on-new-intent [activity ^Intent intent]) onNewIntent New intent delivered (singleTop/singleTask, deep links).
(on-back-pressed [activity]) onBackPressed Back button pressed. If defined, replaces default back behavior entirely; your fn must handle navigation.
(on-request-permissions-result [activity request-code ^String[] permissions ^int[] grant-results]) onRequestPermissionsResult Runtime permission request result (API 23+).

Menus

Clojure fn Java method Description
(on-create-options-menu [activity ^Menu menu]) onCreateOptionsMenu Populate the options menu. Returns boolean -- truthy to display the menu.
(on-prepare-options-menu [activity ^Menu menu]) onPrepareOptionsMenu Update menu before display. Returns boolean -- truthy to show.
(on-options-item-selected [activity ^MenuItem item]) onOptionsItemSelected Options menu item tapped. Returns boolean -- truthy if consumed.
(on-create-context-menu [activity ^ContextMenu menu ^View view menu-info]) onCreateContextMenu Populate a context (long-press) menu.
(on-context-item-selected [activity ^MenuItem item]) onContextItemSelected Context menu item tapped. Returns boolean -- truthy if consumed.

Configuration & Memory

Clojure fn Java method Description
(on-configuration-changed [activity ^Configuration config]) onConfigurationChanged Device configuration changed (rotation, locale, etc.).
(on-low-memory [activity]) onLowMemory System is running low on memory.
(on-trim-memory [activity level]) onTrimMemory System requests memory trimming at the given level.

Window

Clojure fn Java method Description
(on-window-focus-changed [activity has-focus]) onWindowFocusChanged Window gained or lost focus. has-focus is boolean.
(on-attached-to-window [activity]) onAttachedToWindow Activity's window attached to the window manager.
(on-detached-from-window [activity]) onDetachedFromWindow Activity's window detached from the window manager.

Multi-window

Clojure fn Java method Description
(on-multi-window-mode-changed [activity in-multi-window ^Configuration config]) onMultiWindowModeChanged Entered or exited multi-window mode. in-multi-window is boolean.
(on-picture-in-picture-mode-changed [activity in-pip ^Configuration config]) onPictureInPictureModeChanged Entered or exited picture-in-picture. in-pip is boolean.
(on-user-leave-hint [activity]) onUserLeaveHint User pressed Home or otherwise hinted at leaving. Useful for auto-entering PiP.

REPL Helpers

These are Java methods on ClojureActivity, not Clojure delegate functions:

Method Description
ClojureActivity/getInstance(namespace) Get the live activity instance for a namespace (for REPL use).
.reloadUi Re-invoke make-ui and set the result as content view. Thread-safe.
ClojureActivity/reloadAll Reload UI for all tracked activity instances.