Stay organized with collections
Save and categorize content based on your preferences.
SurfaceHolder.Callback2
public
static
interface
SurfaceHolder.Callback2
implements
SurfaceHolder.Callback
android.view.SurfaceHolder.Callback2
|
Known indirect subclasses
GLSurfaceView |
An implementation of SurfaceView that uses the dedicated surface for
displaying OpenGL rendering.
|
NativeActivity |
Convenience for implementing an activity that will be implemented
purely in native code.
|
|
Additional callbacks that can be received for Callback
.
Summary
Public methods
surfaceRedrawNeededAsync
public void surfaceRedrawNeededAsync (SurfaceHolder holder,
Runnable drawingFinished)
An alternative to surfaceRedrawNeeded where it is not required to block
until the redraw is complete. You should initiate the redraw, and return,
later invoking drawingFinished when your redraw is complete.
This can be useful to avoid blocking your main application thread on rendering.
As of O, if this is implemented surfaceRedrawNeeded(SurfaceHolder)
will not be called.
However it is still recommended to implement surfaceRedrawNeeded(SurfaceHolder)
for
compatibility with older versions of the platform.
Parameters |
holder |
SurfaceHolder : The SurfaceHolder which needs redrawing.
This value cannot be null . |
drawingFinished |
Runnable : A runnable to signal completion. This may be invoked
from any thread.
This value cannot be null . |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[null,null,["Last updated 2025-02-10 UTC."],[],[],null,["# SurfaceHolder.Callback2\n\nAdded in [API level 9](/guide/topics/manifest/uses-sdk-element#ApiLevels) \nSummary: [Methods](#pubmethods) \\| [Inherited Methods](#inhmethods) \n\nSurfaceHolder.Callback2\n=======================\n\n*** ** * ** ***\n\n[Kotlin](/reference/kotlin/android/view/SurfaceHolder.Callback2 \"View this page in Kotlin\") \\|Java\n\n\n`\npublic\nstatic\n\n\ninterface\nSurfaceHolder.Callback2\n`\n\n\n`\n\n\nimplements\n\n`[SurfaceHolder.Callback](/reference/android/view/SurfaceHolder.Callback)`\n\n\n`\n\n|--------------------------------------|\n| android.view.SurfaceHolder.Callback2 |\n\n|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Known indirect subclasses [GLSurfaceView](/reference/android/opengl/GLSurfaceView), [NativeActivity](/reference/android/app/NativeActivity) |----------------------------------------------------------|---------------------------------------------------------------------------------------------------| | [GLSurfaceView](/reference/android/opengl/GLSurfaceView) | An implementation of SurfaceView that uses the dedicated surface for displaying OpenGL rendering. | | [NativeActivity](/reference/android/app/NativeActivity) | Convenience for implementing an activity that will be implemented purely in native code. | |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\nAdditional callbacks that can be received for [Callback](/reference/android/view/SurfaceHolder.Callback).\n\nSummary\n-------\n\n| ### Public methods ||\n|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ` abstract void` | ` `[surfaceRedrawNeeded](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeeded(android.view.SurfaceHolder))`(`[SurfaceHolder](/reference/android/view/SurfaceHolder)` holder) ` Called when the application needs to redraw the content of its surface, after it is resized or for some other reason. |\n| ` default void` | ` `[surfaceRedrawNeededAsync](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeededAsync(android.view.SurfaceHolder,%20java.lang.Runnable))`(`[SurfaceHolder](/reference/android/view/SurfaceHolder)` holder, `[Runnable](/reference/java/lang/Runnable)` drawingFinished) ` An alternative to surfaceRedrawNeeded where it is not required to block until the redraw is complete. |\n\n| ### Inherited methods |\n|-----------------------|---|\n| From interface ` `[android.view.SurfaceHolder.Callback](/reference/android/view/SurfaceHolder.Callback)` ` |------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[surfaceChanged](/reference/android/view/SurfaceHolder.Callback#surfaceChanged(android.view.SurfaceHolder,%20int,%20int,%20int))`(`[SurfaceHolder](/reference/android/view/SurfaceHolder)` holder, int format, int width, int height) ` This is called immediately after any structural changes (format or size) have been made to the surface. | | ` abstract void` | ` `[surfaceCreated](/reference/android/view/SurfaceHolder.Callback#surfaceCreated(android.view.SurfaceHolder))`(`[SurfaceHolder](/reference/android/view/SurfaceHolder)` holder) ` This is called immediately after the surface is first created. | | ` abstract void` | ` `[surfaceDestroyed](/reference/android/view/SurfaceHolder.Callback#surfaceDestroyed(android.view.SurfaceHolder))`(`[SurfaceHolder](/reference/android/view/SurfaceHolder)` holder) ` This is called immediately before a surface is being destroyed. | ||\n\nPublic methods\n--------------\n\n### surfaceRedrawNeeded\n\nAdded in [API level 9](/guide/topics/manifest/uses-sdk-element#ApiLevels) \n\n```\npublic abstract void surfaceRedrawNeeded (SurfaceHolder holder)\n```\n\nCalled when the application needs to redraw the content of its\nsurface, after it is resized or for some other reason. By not\nreturning from here until the redraw is complete, you can ensure that\nthe user will not see your surface in a bad state (at its new\nsize before it has been correctly drawn that way). This will\ntypically be preceeded by a call to [SurfaceHolder.Callback.surfaceChanged(SurfaceHolder, int, int, int)](/reference/android/view/SurfaceHolder.Callback#surfaceChanged(android.view.SurfaceHolder,%20int,%20int,%20int)).\n\nAs of O, [surfaceRedrawNeededAsync(SurfaceHolder, Runnable)](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeededAsync(android.view.SurfaceHolder,%20java.lang.Runnable)) may be implemented\nto provide a non-blocking implementation. If [surfaceRedrawNeededAsync(SurfaceHolder, Runnable)](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeededAsync(android.view.SurfaceHolder,%20java.lang.Runnable))\nis not implemented, then this will be called instead.\n\n\u003cbr /\u003e\n\n| Parameters ||\n|----------|---------------------------------------------------------------------------------------------------|\n| `holder` | `SurfaceHolder`: The SurfaceHolder whose surface has changed. This value cannot be `null`. \u003cbr /\u003e |\n\n### surfaceRedrawNeededAsync\n\nAdded in [API level 26](/guide/topics/manifest/uses-sdk-element#ApiLevels) \n\n```\npublic void surfaceRedrawNeededAsync (SurfaceHolder holder, \n Runnable drawingFinished)\n```\n\nAn alternative to surfaceRedrawNeeded where it is not required to block\nuntil the redraw is complete. You should initiate the redraw, and return,\nlater invoking drawingFinished when your redraw is complete.\n\nThis can be useful to avoid blocking your main application thread on rendering.\n\nAs of O, if this is implemented [surfaceRedrawNeeded(SurfaceHolder)](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeeded(android.view.SurfaceHolder)) will not be called.\nHowever it is still recommended to implement [surfaceRedrawNeeded(SurfaceHolder)](/reference/android/view/SurfaceHolder.Callback2#surfaceRedrawNeeded(android.view.SurfaceHolder)) for\ncompatibility with older versions of the platform.\n\n\u003cbr /\u003e\n\n| Parameters ||\n|-------------------|-----------------------------------------------------------------------------------------------------------------------|\n| `holder` | `SurfaceHolder`: The SurfaceHolder which needs redrawing. This value cannot be `null`. \u003cbr /\u003e |\n| `drawingFinished` | `Runnable`: A runnable to signal completion. This may be invoked from any thread. This value cannot be `null`. \u003cbr /\u003e |"]]