一个android应用就是一个Linux进程,每个应用在各自的进程中运行,互不干扰,比较安全。
一个应用对应一个主线程,就是通常所说的UI线程,android遵守的就是单线程模型,所以说Ui操作不是线程安全的

学习参考:线程的几种状态转换
学习参考:Android 中三种启用线程的方法

1、通过继承Thread类,并改写run方法来实现一个线程·

  new MyThread().start();

2、启用方式创建一个Runnable对象

  new Thread(new MyRunnable()).start();

3、通过Handler启动线程

  mHandler.post(mRunnable)

终止线程:

1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
2、使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 thread.stop()。
3、使用interrupt方法中断线程。

使用interrupt方法来终端线程可分为两种情况:

1、线程处于阻塞状态,如使用了sleep方法。
2、使用while(!isInterrupted()){……}来判断线程是否被中断。
 在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。

线程等待:

join()和sleep()方法

join()方法也可以理解为线程之间协作的一种方式,当两个线程需要顺序执行时,调用第一个线程的join()方法能使该线程阻塞,其依然通过wait()方法来实现的。另外,还有带时间参数的join()方法,在超出规定时间后,退出阻塞状态。同样的,其通过带时间参数的wait()方法实现而已。sleep()与wait()的相同之处在于它们都是通过等待阻塞线程,不同之处在于sleep()等待的是时间,wait()等待的是对象的锁。

Android几种进程

1、前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的
2、可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互
3、服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的,例如用户正在非音乐界面听的音乐或者正在非下载页面自己下载的文件等;当系统要空间运行前两者进程时才会被终止
4、后台进程:其中运行着执行onStop方法而停止的程序,但是却不是用户当前关心的,例如后台挂着的QQ,这样的进程系统一旦没了有内存就首先被杀死
5、空进程:不包含任何应用程序的程序组件的进程,这样的进程系统是一般不会让他存在的

更多相关文章

  1. Android(安卓)runtime机制(一)init进程
  2. 【Android】handler类分析研究
  3. Android异步操作总结
  4. Android(安卓)8.0系统源码分析--Zygote启动过程分析
  5. Android(安卓)释放资源和进程的优先级顺序
  6. Android(安卓)U盘文件显示在文件管理器
  7. Android初级开发(八)——手机多媒体—音频和视频的使用
  8. Android(安卓)Scroll详解(三):Android(安卓)绘制过程详解
  9. Android(安卓)Scollview嵌套Listview,Gridview数据显示不完全问

随机推荐

  1. Android(安卓)Neon
  2. android通过代码来开启和关闭移动网络
  3. webservice android
  4. android主线程和子线程的区别
  5. Android 菜单简析01(OptionsMenu)
  6. Android中TextView的相应属性
  7. cordova与android的版本对应和安装
  8. 理解Android 上的安全性
  9. android xutils 基本使用 方法
  10. Android 快速运行的秘诀