Android开发--初识多线程/线程的创建,开启,休眠,中断
在Android开发中有一项非常重要的技术---多线程,本文针对线程的创建,开启,休眠和中断做介绍。
如同在JAVA开发中一样,在Android中,提供了两种方法创建线程,一种是通过Thread类的构造方法创建线程对象,并重写run()方法,另一种是实现Runnable接口,本实例中用到的方法是第一种,第二种方法类似。
本实例实现的是在另一个线程中播放音乐,并使用一个按钮中断线程的运行。
实现的截图如下:

源代码如下所示:
public class MultiThread_Activity extends Activity {private Thread thread;private static MediaPlayer mPlayer=null;private Button button;private Button button2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_multi_thread_);button=(Button)findViewById(R.id.button);button2=(Button)findViewById(R.id.button3);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub((Button)arg0).setEnabled(false);thread=new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubplaySound();}});thread.start();}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubif(thread!=null){thread.interrupt();thread=null;}if(mPlayer!=null){mPlayer.stop();mPlayer.release();mPlayer=null;}button.setEnabled(true);}});}public void playSound() {if(mPlayer!=null){mPlayer.release();}mPlayer=MediaPlayer.create(MultiThread_Activity.this,R.raw.tongnian);mPlayer.start();mPlayer.setOnCompletionListener(new OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer arg0) {// TODO Auto-generated method stubtry {Thread.sleep(5000);playSound();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}});}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if(mPlayer!=null){mPlayer.stop();mPlayer.release();mPlayer=null;}if (thread!=null) {thread=null;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_multi_thread_, menu);return true;}}当用户点击第一个按钮时,开始播放音乐,当音乐播放完毕后,线程休眠5秒后重复播放音乐,当用户点击第二个按钮时,结束音乐的播放,同时线程中断。