Skip to content

destroy

任务句柄销毁

destroySUDOPGameTask 接口中的核心方法。它作为异步任务(如游戏预加载、资源下载、环境初始化等)的“中止开关”,用于在任务不再需要时立即释放相关系统资源。当 Activity 销毁或用户主动取消加载时,调用此方法可以确保后台任务不会继续消耗内存和带宽。


方法声明

java
/**
 * 取消当前正在进行的任务,并释放与之关联的所有硬件与内存资源。
 * 调用后,该任务实例将进入失效状态。
 */
void destroy();

运行行为

  1. 立即中断:引擎会向底层发送中断信号,停止当前任务的代码逻辑执行及网络 I/O 传输。
  2. 资源回放:触发底层引擎释放已占用的内存缓冲区、文件句柄及临时对象。
  3. 状态失效:一旦调用,该 Task 实例即宣告废弃。后续尝试通过该实例进行的操作将被 SDK 拦截或忽略。
  4. 静默销毁:销毁过程通常不会触发原任务的“成功”回调,但可能会触发包含“被取消”信息的错误回调。

代码示例

ActivityFragment 销毁时,确保及时销毁预加载任务以节省性能:

java
public class GameActivity extends AppCompatActivity {
    private SUDOPGameTask mPreloadTask;

    private void startPreload() {
        // 启动预加载并持有句柄
        mPreloadTask = SudRT.getSDK().preloadGame("game_id_123");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        
        // 1. 如果任务仍在进行,则立即销毁
        if (mPreloadTask != null) {
            mPreloadTask.destroy();
            
            // 2. 将句柄置空,防止内存泄漏
            mPreloadTask = null;
        }
    }
}

注意事项

  • 生命周期绑定:强烈建议将 SUDOPGameTask 的生命周期与 Android 组件(Activity/ViewModel)绑定,在 onDestroyonCleared 中执行销毁。
  • 幂等性:该方法支持多次调用。若任务已经销毁,再次调用 destroy() 不会产生副作用或引发应用崩溃。
  • 线程安全:可以在 UI 线程或子线程安全调用,SDK 内部会处理跨线程的状态同步。
  • 独立性destroy() 仅针对当前 Task 句柄代表的任务。它不会停止已经运行的游戏实例或影响全局 SDK 的状态。