在代码中启动一个线程

时间:2012-08-31 00:57:01

标签: android multithreading

如何在此代码中启动线程?在何处以及如何启动线程活动,因为我的应用程序在转到此部分代码时停止。

public class Lesson_p extends Activity implements OnClickListener {

MediaPlayer p, p_sound;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.lesson_p);
    p = MediaPlayer.create(this, R.raw.p);
    p_sound = MediaPlayer.create(this, R.raw.p_sound);

    View p = findViewById(R.id.imageButton_p);
    p.setOnClickListener((OnClickListener)this);

    View p_sound = findViewById(R.id.imageButton_pp);
    p_sound.setOnClickListener((OnClickListener)this);

    Button back = (Button) findViewById(R.id.button_bckp);
    back.setOnClickListener((OnClickListener)this);

    Button next = (Button) findViewById(R.id.button_nxtp);
    next.setOnClickListener((OnClickListener)this);
}

public void onClick(View v) {
    // TODO Auto-generated method stub
     switch(v.getId()){
        case R.id.imageButton_p:
            p.start();
            break;

        case R.id.imageButton_pp:
            p_sound.start();
            break;

        case R.id.button_bckp:
            Intent back = new Intent(this, Example_n.class);
            startActivity(back);
            break;

        case R.id.button_nxtp:
            Intent next = new Intent(this, Example_p.class);
            startActivity(next);
            break;

        }


}
//@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    p.release();
    p_sound.release();
}

}

2 个答案:

答案 0 :(得分:1)

查看此课程

AsyncTask

如果你想在后台做某事,这是一个很有用的类,但是记住线程不能直接与主UI线程中的元素交互。

答案 1 :(得分:0)

你说它停在button_nxtp函数中(这不是一个函数,它只是一个转换中的某种情况)。

看起来您正在为Example_p活动创建并启动Intent。使用调试器逐步执行onCreate()类的onStart()Example_p方法,您应该能够找到错误。