gpt4 book ai didi

java - 从不扩展 Activity 的类调用 Activity

转载 作者:行者123 更新时间:2023-12-01 13:35:39 24 4
gpt4 key购买 nike

有什么方法可以从不扩展 Activity 的东西中调用 Activity 吗?无需在 UI-tread 上运行它。我想在我的游戏中添加 toast 信息,就像《糖果粉碎传奇》中那样。但我不知道如何实时有效地调用 toast-activity。

我知道您可以使用上下文并从中获取 Activity ,但它运行得不太顺利。有谁有如何做到这一点的经验?

最佳答案

Toast 以及其他操作用户界面的组件不得在 UI 线程之外使用。

为了解决您的问题,您可以做的是在管理游戏的线程和 UI 线程之间设计一个消息传递系统。为此,您可以使用 Handler及其消息传递工具(sendMessagepostpostDelayed ...)来发送消息甚至 Runnables在主线程上运行。

如果您在主线程中创建一个Handler,它会自动将自己与主线程的事件循环关联起来,从而使发送给它的每个工作都在主线程中执行。

您可以做的一个基本示例是:

class MainActivity extends Activity {

// The handler is associated with your Activity's thread
private Handler _handler = new Handler();
// ...

private Thread _worker = new Thread() {

@Override
public void run() {
_handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Some text", Toast.LENGTH_SHORT).show();
}
});
}
};
};

作为简写,您还可以使用 Activity.runOnUiThread(Runnable r)默认情况下在 UI 线程中执行给定的可运行对象。

关于java - 从不扩展 Activity 的类调用 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com