应用程序销毁时未调用 ApplicationAdapter 的 dispose() 方法

问题描述 投票:0回答:0

我正在使用 libgdx 开发多人游戏。我想在连接关闭之前处理向服务器发送一些注销信息。根据我的阅读,Libgdx 的 ApplicationAdapter 类的 dispose() 方法在应用程序关闭时并不总是被调用,例如,如果它在暂停时关闭。我读过其他人向其他只想处置资产的人建议,他们应该将其放入暂停方法中,但在我的情况下,我不希望它在暂停时被调用,例如,如果我只是按下主屏幕或移动到另一个应用程序。我只希望在我实际关闭应用程序时调用它,例如,如果我要通过按右下角的按钮进入 android 应用程序概览屏幕,查看所有正在运行的应用程序,然后向上滑动我的游戏删除它并终止它,或者如果游戏崩溃。我可以把它放在哪里,以便每次应用程序终止时调用它,但前提是它终止时,而不是它刚刚暂停或在后台时。 为了重现,我提供了一个通用的 libgdx 项目,我添加的只是 Log.i 命令。

package com.mycompany.mygame;

import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.*;
import android.util.*;

public class MyGdxGame implements ApplicationListener
{
    Texture texture;
    SpriteBatch batch;

    @Override
    public void create()
    {
        texture = new Texture(Gdx.files.internal("android.jpg"));
        batch = new SpriteBatch();
    }

    @Override
    public void render()
    {        
        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(texture, Gdx.graphics.getWidth() / 4, 0, 
                   Gdx.graphics.getWidth() / 2, Gdx.graphics.getWidth() / 2);
        batch.end();
    }

    @Override
    public void dispose()
    {
        Log.i("test", "dispose ran");
        
    }

    @Override
    public void resize(int width, int height)
    {
    }

    @Override
    public void pause()
    {
    }

    @Override
    public void resume()
    {
    }
}

java libgdx dispose destroy
© www.soinside.com 2019 - 2024. All rights reserved.