代码之家  ›  专栏  ›  技术社区  ›  Leif Andersen

androidsdk中的应用生命周期和onCreate方法

  •  1
  • Leif Andersen  · 技术社区  · 16 年前

    我组装了一个简单的测试应用程序,它有一个按钮,当用户点击它时会发出噪音。方法如下:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button)findViewById(R.id.easy);
        b.setOnClickListener(this);
    }
    
    public void onClick(View v) {
        MediaPlayer mp = MediaPlayer.create(this, R.raw.easy);
        mp.start();
        while(true) {
            if (!mp.isPlaying()) {
                mp.release();
                break;
            }
        }
    }
    

    另外,我知道我目前判断声音是否在播放的方式是垃圾……我稍后再谈

    非常感谢。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Rich    16 年前

    您是根据您编写的代码来考虑button实例,而不是在框架构建的视图中使用的实例。您的按钮变量(b)只是对它的引用。一旦onCreate方法超出范围,您的引用就不再有效,但是按钮仍然存在于您的UI中。您的引用足够长,可以将侦听器方法附加到它,因此在按钮的生命周期中(很明显,在onCreate来了又走了之后,您仍然可以在UI中看到)更多地与您可以看到它的时间相关联,而不是与您创建的变量的范围相关联。

    顺便说一句…我知道你刚刚开始,你的MediaPlayer代码刚刚拼凑在一起,但为了将来的参考,你不需要一个while循环。MediaPlayer提供onCompletionListener回调:

    OnCompletionListener