destroy
任务句柄销毁
destroy 是 SUDOPGameTask 接口中的核心方法。它作为异步任务(如游戏预加载、资源下载、环境初始化等)的“中止开关”,用于在任务不再需要时立即释放相关系统资源。当 Activity 销毁或用户主动取消加载时,调用此方法可以确保后台任务不会继续消耗内存和带宽。
方法声明
java
/**
* 取消当前正在进行的任务,并释放与之关联的所有硬件与内存资源。
* 调用后,该任务实例将进入失效状态。
*/
void destroy();运行行为
- 立即中断:引擎会向底层发送中断信号,停止当前任务的代码逻辑执行及网络 I/O 传输。
- 资源回放:触发底层引擎释放已占用的内存缓冲区、文件句柄及临时对象。
- 状态失效:一旦调用,该 Task 实例即宣告废弃。后续尝试通过该实例进行的操作将被 SDK 拦截或忽略。
- 静默销毁:销毁过程通常不会触发原任务的“成功”回调,但可能会触发包含“被取消”信息的错误回调。
代码示例
在 Activity 或 Fragment 销毁时,确保及时销毁预加载任务以节省性能:
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)绑定,在onDestroy或onCleared中执行销毁。 - 幂等性:该方法支持多次调用。若任务已经销毁,再次调用
destroy()不会产生副作用或引发应用崩溃。 - 线程安全:可以在 UI 线程或子线程安全调用,SDK 内部会处理跨线程的状态同步。
- 独立性:
destroy()仅针对当前 Task 句柄代表的任务。它不会停止已经运行的游戏实例或影响全局 SDK 的状态。