android - 为了使用 runOnUIThread 而扩展 Activity 有什么问题吗?

标签 android android-activity extend soundpool

我有一个这样定义的类:(我有几页代码,但我只发布相关部分以提高可读性)。

现在,它本身并没有什么“错误”,而且效果很好,但是几天前有人告诉我,在我将要创建的类(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?

你不知道。使用其他工具(例如在 ViewHandler 上调用 post())来路由要在主应用程序线程上完成的工作。

关于android - 为了使用 runOnUIThread 而扩展 Activity 有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408842/

相关文章:

codeigniter - 如何扩展自己的库?

android - ToyVPN 无法连接到 VPN 服务器

javascript - $.extend() = 与服务器循环一起使用时不扩展

java - 关于 Swing 组件扩展的经验法则是什么?

android - 关于 toast 和 Activity 更改的 WindowManager$BadTokenException

android - 这个异步任务正确吗?

android - 适当存储和显示我的书签/历史 Activity ?

Android Espresso 辅助功能检查失败

android - Room- LiveData RxJava 无故触发

java - 如何计算字符串中格式字符的数量?