Java 如何从非ui线程(从曲面视图绘图线程)启动活动
我正在开发一款android游戏,它使用一个表面视图来表示ui图形。我需要实现一种方法,如果用户接触到特定区域,则启动另一个活动。 为此,我将主(前景)活动的当前实例传递给曲面视图 我可以轻松处理触摸,但无法从收到的实例启动活动 **>如果我从接收到的 发生当前活动异常,表明它是来自非 用户界面线程**Java 如何从非ui线程(从曲面视图绘图线程)启动活动,java,android,android-activity,thread-safety,Java,Android,Android Activity,Thread Safety,我正在开发一款android游戏,它使用一个表面视图来表示ui图形。我需要实现一种方法,如果用户接触到特定区域,则启动另一个活动。 为此,我将主(前景)活动的当前实例传递给曲面视图 我可以轻松处理触摸,但无法从收到的实例启动活动 **>如果我从接收到的 发生当前活动异常,表明它是来自非 用户界面线程** 我正在使用一个扩展到surface view的类,并将其传递给在画布上绘制的线程SurfaceView是否在活动中? 如果是,请使用 runOnUiThread(new Runnable() {
我正在使用一个扩展到surface view的类,并将其传递给在画布上绘制的线程SurfaceView是否在活动中? 如果是,请使用
runOnUiThread(new Runnable() {
public void run() {
//startActivity
}
});
如果你不在活动范围内,你真的不应该开始其他活动
SurfaceView还有一个post和postDelayed方法,可用于在UI线程上发布可运行文件
post(new Runnable() {
public void run() {
//startActivity
}
});
我想你可以做到这一点
runOnUiThread(new Runnable() {
public void run() {
// start your activity here
}
});
您可以使用:
// from MySurfaceView/Activity
Context context = getContext();
//EffectingActivity is another activity
Intent intent = new Intent(context, EffectingActivity.class);
context.startActivity(intent);
在我的应用程序中,一个表面视图的对象在活动中被实例化,然后该对象被传递给活动的setContentView()方法。我认为如果它不是直接在活动中,那么它不应该启动其他活动。。它应该将其委托给使用它的活动。我将实现一些接口来响应来自surfaceview的一些事件(回调函数)。不过,我还需要看更多的代码才能帮到你。谢谢,伙计们,我找到了答案,我从类实例中调用了rununui,它工作得非常好