在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秒后重复播放音乐,当用户点击第二个按钮时,结束音乐的播放,同时线程中断。
分享到:
相关推荐
#### Day01 - [初识Python](./Day01-15/01.初识Python.md) - Python简介 - Python的历史 / Python的优缺点 / Python的应用领域 - 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境 - 从终端运行Python程序 - ...
Java开发学习(一)----初识Spring及其核心概念.doc
Day01 - 初识Python Python简介 - Python的历史 / Python的优缺点 / Python的应用领域 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境 从终端运行Python程序 - Hello, world / print函数 / 运行程序 使用IDLE ...
第2章---初识HTML5ppt课件(全).ppt
任务9-1-初识人工智能.docx
Docker基础-8-初识container.rar
上好人工智能“第一课”--“初识人工智能”.pdf
2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / 39 2.3 IPC基础概念介绍 / 42 2.3.1 Serializable接口 / 42 2.3.2 Parcelable接口 / 45 2.3.3 Binder / 47 2.4 Android中的IPC方式 / 61 ...
06-23《初识人工智能》教学设计.doc
美联英语在线VIP-6%2B课程体系
ppt制作的中学信息技术- IP地址初识课件IP地址简介
16 1.2.2 Activity的Flags / 27 1.3 Intent Filter的匹配规则 / 28 第2章 IPC机制 / 35 2.1 Android IPC简介 / 35 2.2 Android中的多进程模式 / 36 2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / ...
05-01《初识Scratch》教学设计.doc
SSM笔记-SpringMVC REST风格初识、RequestMapping/PathVariable/RequestParam/RequestHeader/CookieValue基本使用方法
中学信息技术-_《初识Excel》PPT课件.ppt
数据库应用软件:第2-1章 初识SQL Server2005.ppt