从OpenGL主循环内开始一个新的Android活动

问题描述:

我创建了一个扩展活动的类,它将提示用户选择一个电子邮件客户端并发送电子邮件。如果我从MainActivity的onCreate内部调用它,我可以使这个类完美地工作。但是,一旦OpenGL启动,我不知道如何在OpenGL循环接管后启动此活动。我曾尝试通过在MainActivity上下文我的OpenGL线程,并启动电子邮件活动,如:从OpenGL主循环内开始一个新的Android活动

// This starts a new activity and sends the email with the text file 
Intent emailIntent = new Intent(context, SendEmailActivity.class); 
String filePath = Environment.getExternalStorageDirectory().toString() + "/MoCap/TomsFile.txt"; 
emailIntent.putExtra("filePath", filePath); 
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(emailIntent); 

就会启动我的活动就好了。但是,在完成发送电子邮件之后,我又回到了OpenGL 1285内存越界错误。有什么想法吗?

我找到了答案,我的问题在这里: Finishing an Activity from a context

我需要添加((Activity) context).finish();我叫startActivity后。

我认为你使用GLSurfaceView来使用OpenGL。如果是这样,请在发送电子邮件活动之前尝试使用GLSurfaceView.onPause()。当回到OpenGL上的Activity时,调用GLSurfaceView.onResume();

+0

感谢您的提示。不幸的是,我使用了一个名为jMonkey的包,它将很多核心的OpenGL东西(比如onPause()和onResume())从用户中抽象出来。我曾试着研究它是如何工作的,并且它看起来像用OGLESContext启动它自己的线程,并将主Android活动留在后面。这就是为什么我试图传递上下文并启动它,但我不知道为什么当我这样做时出现OpenGL 1285错误。我认为这与阻塞主更新线程有关? – tomsrobots