Android小項目之---時間線程應用(附源碼)
来源:互联网 发布:php开发短信平台 编辑:程序博客网 时间:2024/06/10 02:11
进程
在Android 中,进程是应用程序的完整实现,而不是用户通常了解的那样。他们主要用途很简单:
• 提高稳定性和安全性,将不信任或者不稳定的代码移动到其他进程。
• 可将多个.apk 包运行在同一个进程里减少系统开销。
• 帮助系统管理资源,将重要的代码放在一个单独的进程里,这样就可以单独销毁应用程序的其他部分。
像前面描述的一样,进程的属性被用来控制那些有特殊应用组件运行的进程。注意这个属性不能违反系统安全: 如果两个.apk 包不能共享同一个用户ID,却试图运行在通一个进程里,这种情况是不被允许的,事实上系统将会创建两个不同的进程。请查看安全相关文档以获取更多关于安全限制方面的信息。
• 提高稳定性和安全性,将不信任或者不稳定的代码移动到其他进程。
• 可将多个.apk 包运行在同一个进程里减少系统开销。
• 帮助系统管理资源,将重要的代码放在一个单独的进程里,这样就可以单独销毁应用程序的其他部分。
像前面描述的一样,进程的属性被用来控制那些有特殊应用组件运行的进程。注意这个属性不能违反系统安全: 如果两个.apk 包不能共享同一个用户ID,却试图运行在通一个进程里,这种情况是不被允许的,事实上系统将会创建两个不同的进程。请查看安全相关文档以获取更多关于安全限制方面的信息。
线程
每个进程包含一个或多个线程。多数情况下,Android 避免在进程里创建多余的线程,除非它创建它自己的线程,我们应保持应用程序的单线程性。一个重要的结论就是所有呼叫实例, 广播接收器, 以及服务的实例都是由这个进程里运行的主线程创建的。注意新的线程不是为活动,广播接收器,服务或者内容提供器实例创建:这些应用程序的组件在进程里被实例化(除非另有说明,都在同一个进程处理),实际上是进程的主线程。这说明当系统调用时这些组件(包括服务)不需要进程远距离或者封锁操作(就像网络呼叫或者计算循环),因为这将阻止进程中的所有其他组件。你可以使用标准的线程类或者Android 的HandlerThread 类去对其它线程执行远程操作。这里有一些关于创建线程规则的例外:
• 呼叫IBinder 或者IBinder 实现的接口,如果该呼叫来自其他进程,你可以通过线程发送的IBinder 或者本地进程中的线程池呼叫它们,从进程的主线程呼叫是不可以的。特殊情况下,,呼叫一个服务的IBinder可以这样处理。(虽然在服务里呼叫方法在主线程里已经完成。)这意味着IBinder 接口的实现必须要有一种线程安全的方法,这样任意线程才能同时访问它。
• 呼叫由正在被调用的线程或者主线程以及IBinder 派发的内容提供器的主方法。被指定的方法在内容提供器的类里有记录。这意味着实现这些方法必须要有一种线程安全的模式,这样任意其它线程同时可以访问它。
• 呼叫视图以及由视图里正在运行的线程组成的子类。通常情况下,这会被作为进程的主线程,如果你创建一个线程并显示一个窗口,那么继承的窗口视图将从那个线程里启动。
• 呼叫IBinder 或者IBinder 实现的接口,如果该呼叫来自其他进程,你可以通过线程发送的IBinder 或者本地进程中的线程池呼叫它们,从进程的主线程呼叫是不可以的。特殊情况下,,呼叫一个服务的IBinder可以这样处理。(虽然在服务里呼叫方法在主线程里已经完成。)这意味着IBinder 接口的实现必须要有一种线程安全的方法,这样任意线程才能同时访问它。
• 呼叫由正在被调用的线程或者主线程以及IBinder 派发的内容提供器的主方法。被指定的方法在内容提供器的类里有记录。这意味着实现这些方法必须要有一种线程安全的模式,这样任意其它线程同时可以访问它。
• 呼叫视图以及由视图里正在运行的线程组成的子类。通常情况下,这会被作为进程的主线程,如果你创建一个线程并显示一个窗口,那么继承的窗口视图将从那个线程里启动。
底層原理如上,項目小實例開始:
網上看了一些例子,有高手們是直接新建一個類,然後繼承Thread之生重寫run方法,這個項目我將采用第二種寫法,就是繼承直接用Activity去繼承implements Runnable如:public class testAnalogClock extends Activity implements Runnable ,之后我們只要重寫Runnable的實現方法就可以做到同樣的效果。因為網上有很多相似功能,具體代碼將不做過多解釋,我會在項目上一一做注釋,源碼如下:
0 0
- Android小項目之---時間線程應用(附源碼)
- Android小項目之---ListView实现论坛管理效果(附源碼)
- Android小項目之---ListView实现论坛管理效果(附源碼)
- Android小項目之--ListView與ListAcitivity完善論壇管理效果2(附源碼)
- Android小項目之--Linkify詳細應用
- 【android笔记】之 android studio (一)
- Android之旅(二):Android Http
- Android之旅(三):Android 多线程
- Android JNI之基本点(android studio)
- android 学习之---Android之SurfaceView学习(一)
- Android 之Toast讲解-android学习之旅(一)
- Android之Notification-android学习之旅(二)
- Android之Service(转)
- android之GoogleMap(二)
- android之activity(笔记)
- android 之IO(2)
- android之mediarecorder(2)
- android之ListView(列表)
- React.js生态系统概览 [译]
- Android 小项目之--Mini音乐播放器【简单版】(附源码)
- 图解Git
- Android绘图初步—Path
- java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x10
- Android小項目之---時間線程應用(附源碼)
- 网游创业为什么会失败?
- 字符串包含问题
- HTML5 input file 打开很慢的问题
- yii2.0控制层操作分页增删
- CUDA 学习(二十)、优化策略5: 算法
- C++ 高质量编程附录试题
- spring boot @EnableAutoConfiguration 导致CNF问题
- mysql utf8mb4_unicode_ci utf8mb4_general_ci