我有一个这样定义的类:(我有几页代码,但我只发布相关部分以提高可读性)。
现在,它本身并没有什么“错误”,而且效果很好,但是几天前有人告诉我,在我将要创建的类(class)上扩展“Activity ”并不是一个好主意对象(即,我将为其创建实例的类)- 我确实在我的代码中的某个点创建了一个 MyGLRenderer 对象。
所以我的问题是:
1) 扩展 Activity 是否“不好”?
2)如果是,为什么?
3) 如果是这样,我如何使用 runOnUIThread 创建我的 soundPool 类?
如果这样做没问题,那么我会离开它,但如果它可能会产生大问题,如果有人能告诉我另一种访问它的方法,我将不胜感激。
(我的类是单独的文件,不是外部类和内部类,我需要在这个类中创建我的 SoundPool 对象,就像我在这个类中的所有初始化一样)。
代码
public class MyGLRenderer extends Activity implements GLSurfaceView.Renderer{
//Various pieces of code
public void onSurfaceChanged(){
runOnUiThread(new Runnable() {
public void run() {
sound = new soundMan(curView.getContext());
}
最佳答案
Is it 'bad' to extend Activity?
如果它不是真正的 Activity ,由 startActivity()
启动,那么是的,它是“坏的”。
If so, why?
因为很多东西都不能正常工作。 runOnUiThread()
的工作是一个小小的奇迹,并且不能保证它在将来随着 Activity
的修改而继续工作。事实上,它完全有可能无法在某些旧设备上运行,或者在制造商以适用于实际 Activity 的方式修改 Activity
但会因像您这样的误用而中断的设备上运行。
If so, how can I use runOnUIThread to create my soundPool class?
你不知道。使用其他工具(例如在 View
或 Handler
上调用 post()
)来路由要在主应用程序线程上完成的工作。
关于android - 为了使用 runOnUIThread 而扩展 Activity 有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408842/