Android开发-初识多线程/线程的创建,开启,休眠,中断
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; @Override protected 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() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub ((Button)arg0).setEnabled(false); thread=new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub playSound(); } }); thread.start(); } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(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() { @Override public void onCompletion(MediaPlayer arg0) { // TODO Auto-generated method stub try { Thread.sleep(5000); playSound(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if(mPlayer!=null){ mPlayer.stop(); mPlayer.release(); mPlayer=null; } if (thread!=null) { thread=null; } } @Override public 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秒后重复播放音乐,当用户点击第二个按钮时,结束音乐的播放,同时线程中断。