new Thread(new Runnable() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
myhandler.sendMessage(msg);
}
}).start();
public Handler myhandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) { //判断标志位
case 0:
MakeToast("finished!");
break;
}
}
};

中断线程,thread_update_view是线程的名字:

if(thread_update_view!=null){
thread_update_view.interrupt();
thread_update_view = null;
}

关于中断,最好就使用上面这个interrupt的方法,因为不会强行中断,但是需要注意:

比如:

thread_cut_music = new Thread(new Runnable() {
@Override
public void run() {
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
myApp.MakeToast("找不到资源");
int temp = (myApp.getUser_music_playing()+1)%myApp.getUser_music_url_list().size();
myApp.setUser_music_playing(temp);
CutMusic();
}
}
});

这里面mediaPlayer.prepare()可能会执行很久,如果在这过程中使用了interrupt中断该线程,prepare()还是会继续执行,这时如果抛出错误,那么catch里面的内容会被执行,并不会因为interrupt而取消执行。

所以,很多时候需要这样做。

private class ThreadSafeCut extends Thread {
public void run() {
try {
mediaPlayer.prepare();
if(isInterrupted()) return;
if(myApp.getIs_usermusic_playing()){
mediaPlayer.start();
}
} catch (IOException e) {
e.printStackTrace();
if(!isInterrupted()){ //如果线程没被中断,则自动切歌
Log.d(TAG, "run: "+isInterrupted());
myApp.MakeToast("找不到资源");
int temp = (myApp.getUser_music_playing()+1)%myApp.getUser_music_url_list().size();
myApp.setUser_music_playing(temp);
CutMusic();
}
}
}
}

可以利用isInterrupted()来查看这个线程是否被中断。

在Activity销毁之前,清除Handler所有Message和Runnable;

线程 Thread Handler的更多相关文章

  1. 学习通过Thread+Handler实现非UI线程更新UI组件

    [Android线程机制] 出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题.为了解决这个问题,Android制定了一条简单的规则 ...

  2. Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    Android应用的开发过程中需要把繁重的任务(IO,网络连接等)放到其他线程中异步执行,达到不阻塞UI的效果. 下面将由浅入深介绍Android进行异步处理的实现方法和系统底层的实现原理. 本文介绍 ...

  3. Thread+Handler 线程 消息循环(转载)

    近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子. andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图 ...

  4. 学习通过Thread+Handler实现非UI线程更新UI组件(转)

    [Android线程机制] 出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题.为了解决这个问题,Android制定了一条简单的规则 ...

  5. Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线程更新UI界面

    目录: Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+L ...

  6. AsyncTask 与 Thread+Handler

    AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute().onPostExecute()及更新UI方法on ...

  7. Android 线程Thread的2种实现方法

    在讲解之前有以下三点要说明: 1.在Android中有两种实现线程Thread的方法: ①扩展java.long.Thread类: ②实现Runnable()接口: 2.Thread类是线程类,它有两 ...

  8. Android线程和handler

    根据视频仿照着写了个demo: package com.wyl.wylthreadtest; import android.graphics.Color; import android.os.Bund ...

  9. 线程 Thread Runnable 守护线程 join MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. requirements.txt 的使用与创建

    1. requirements.txt  主要是记录你的python 解释器安装了那些第三方模块,这样好方便项目迁移,自动解决掉项目的依赖关系 2. 网上找的那些关于 requirements 的文档 ...

  2. 机器学习入门-数值特征-进行多项式变化(将特征投影到高维度上) 1.PolynomialFeatures(将数据变化为多项式特征)

    函数说明: 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False) 参数说明:degree=2,表示多项 ...

  3. C++/C#:类Class与结构体Struct的区别

    C++中: 默认的访问控制.继承访问权限不同:struct时public的,class时 private的: 其它基本一样. C#中: struct是值类型,class是引用类型的: struct S ...

  4. Hbase数据读写流程

    From: https://blog.csdn.net/wuxintdrh/article/details/69056188 写操作: Client写入,存入Memstore,Memstore满则Fl ...

  5. 尚硅谷springboot学习10-@PropertySource,@ImportResource,@Bean

    @PropertySource 使用指定的属性文件而不一定是application.xxx 同样可以注入相关内容 @ImportResource 导入Spring的配置文件,让配置文件里面的内容生效: ...

  6. Indy 10.5.8 for Delphi and Lazarus 修改版(2011)

    Indy 10.5.8 for Delphi and Lazarus 修改版(2011)    Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...

  7. Zookeeper 在Linux系统的安装

    注册中心Zookeeper 官方推荐使用 zookeeper 注册中心.注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小. Z ...

  8. Haskell语言学习笔记(80)req

    req req 是一个好用,类型安全,可扩展,上层的HTTP客户端的库. $ cabal install req Installed req-1.1.0 Prelude> :m +Network ...

  9. ajax跨域名

    跨域环境模拟: 修改host文件 三种解决的方案 1:ifram(display:none) 2:jsonp(注意是只是适合的是get请求) 生成一个带有src的script标签, 3:cros(后台 ...

  10. .net上的 jpa

    还没试过,有空试试: NPersistence ORSQL