java - 在线程中如何返回上一个活动
问题描述
基本上,我从 MainActivity 开始了一个名为 GameManagerAct 的新活动。在 GameManagerAct 中,我将我的内容视图设置为 GameManager,它只是一个包含线程的类。因为它有一个线程,所以它卡在我的 GameManager 对象中。当我到达 GameManager 对象中想要返回到上一个活动 (MainActivity) 的点时,我将如何执行此操作?由于它只是一个类而不是 Activity,因此它无法访问 GameManagerAct 的 finish() 命令。
我尝试将代码从 GameManager 对象移动到 GameManagerAct 中,但这不起作用。
// 在 MainActivity.java
startActivity(new Intent(MainActivity.this, GameManagerAct.class));
// 在 GameManagerAct.java 中
GameManager gm = new GameManager(this);
setContentView(gm);
// 在 GameManager.java 中
else if (quitRect.contains(movePointX, movePointY)) {
// ends GameManagerAct activity and returns back the MainActivity
}
我希望 setContentView 返回到 MainActivity 的那个。目前,没有任何反应,因为我不知道该怎么做。
解决方案
您应该创建接口以从您的 GameManager 类访问您的视图(活动),并且当您的工作完成时,它会调用您的接口方法,在该接口方法中您可以完成活动。或者你也可以使用可观察的设计模式。
interface GameInterface{
void workDone();
}
在你的活动中实现这个
GameManagerAct implement GameInterface{
并像这样覆盖它:
void workDone(){
this.finish();
}
将它传递给 GameManager 类。并在完成工作时使用该方法。
interfaceObject.workDone();
推荐阅读
- python - Python - 在一段时间后执行函数?
- oracle-adf - 不支持的连续查询通知查询
- python - 如何使用 VSCode 和管道命令进行调试
- nginx - nginx,提供具有身份验证的静态文件
- python - 从 predict_proba() 检索非零类概率
- python-3.x - 如何组合具有不同索引级别的两个数据框?
- python - 聊天室服务器在 SIGINT 时未关闭线程且未退出
- javascript - 如何找到第一次出现的两位数
- ios - 使用swift的IOS步骤菜单
- debugging - 是否有任何无需源代码即可工作的函数执行时间性能分析器?仅使用填充了 x86 程序集的 .EXE