繁体   English   中英

正确地从非活动类开始一个意图

[英]Correctly starting an intent from non-activity class

我的应用程序是一个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 Thread(如上面的onTouchEvent方法)开始的,这有关系吗?

目前,我有一个Activity类的句柄,只需执行以下操作:

activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(webAddress)));

并且它工作正常(这是从GL线程完成的),然而,有些事情告诉我这不是完成此任务的正确方法。

如果您的班级提供上下文,应用程序等,您可以轻松地这样做

getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://stackoverflow.com/")));

要么

getApplication().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://stackoverflow.com/")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM