我的应用程序是一个OpenGL ES 2.0应用程序,因此,有2个必需的线程(UI线程和GL线程)
我有一个扩展Activity的类,从那里我可以很容易地开始这样的意图:
Public class MainActivity extends Activity{
public void goToSomeWebsite(){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(webAddress)));
}
}
现在,我有另一个类,它基本上是一个Scene,我在该类中有一个onTouchEvent方法,以及一个render方法和一些其他方法。因此,onTouchEvent在UI线程和render方法(以及其他)上运行,在GL线程上运行。
所以我的班级会是这样的:
public class MyScene implements Scene(){
@Override
public void render(){
//Render something here
}
@Override
public void updateLogiC(){
//Do some other work here
}
@Override
public boolean onTouchEvent(MotionEvent event){
//Handle touch events
return false;
}
}
从上面的课程中,开始这个其他意图的正确(和安全)方式是什么?
我是从GL Thread(比如上面的updateLogic)还是从UI线程(如上面的onTouchEvent方法)开始的,这是否重要?
目前,我有一个Activity类的句柄,只需执行以下操作:
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(webAddress)));
它工作正常(这是从GL线程完成的),然而,有些东西告诉我这不是完成此任务的正确方法。
答案 0 :(得分:0)
如果您的班级提供上下文,应用程序等,您可以轻松地执行此操作
getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://stackoverflow.com/")));
或
getApplication().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://stackoverflow.com/")));