当前位置:首页 » 安卓系统 » android开启线程

android开启线程

发布时间: 2025-01-04 03:51:46

A. Android中的线程和线程池

一、除了Thread外,扮演线程角色的还有:AsyncTask和IntentService,同时HandlerThread也扮演特殊的线程。

      IntentService:内部采用HandlerThread来执行,像一个后台线程,同时是一个服务,不容易被系统杀死。

二、HandlerThread的run方法是一个无限循环

三、IntentService中任务是排队执行的

四、AsyncTask 

1、Android1.6之前串悄段桐行执行任务,1.6时候采用线程池里的并行,Android3.0开始又开始串行(为了避免并发错误),单任可以并行。

2、AsyncTask必须在UI线程调用(不过这个不是绝对的,和版本有关燃腔系,API 16之前,API 16到 22, API 22以后) 参考一

原因:内部有静态Handler,采用UI线程的Looper来处理消息,这就是为什么AsyncTask必须在UI线程调用,因为子线程默认没有Looper无法创建下面的Handler,程序会直接Crash

3、AsyncTask中有两个线程池和一个Handler,一个线程池用启坦于任务排队,一个线程池用于真正的执行任务,InternalHandler用于将

执行环境从线程池切换到主线程

AsyncTask串行与并行

五、线程池

线程池中多余的线程是如何回收的

B. android onactivityresult 里面可以开线程吗

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

<1>startActivityForResult(Intent intent,
int requestCode);

第一个参数:一个Intent对象

第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

<2>onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

这个requestCode和startActivityForResult中的requestCode相对应。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。

第三个参数:一个Intent对象,带有返回的数据。

<3>setResult(int resultCode, Intent data)

调用这个方法把Activity想要返回的数据返回到父Activity

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

第二个参数:一个Intent对象,返回给父Activity的数据。

C. android在activity启用线程,没有出错,调试过了,不执行run()方法,附上代码。

我 直接给你上代码了,你看看线程是怎么用的,希望你自己学会他!
public void OnClick(){
MyThread t1=new MyThread();
t1,start();
}

class MyThread implements Runnable {
public void run() {
你的代码

}
}

D. Android 如何创建子线程以及区分主线程

在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver)都会跑在这个Process。
一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread。在这么多Thread当中,有一个Thread,我们称之为UI Thread。UI Thread在Android程序运行的时候就被创建,是一个Process当中的主线程Main Thread,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行,以免阻塞主线程。
那么,UI Thread如何和其他Thread一起工作呢?常用方法是:
诞生一个主线程的Handler物件,当做Listener去让子线程能将讯息Push到主线程的Message Quene里,以便触发主线程的handlerMessage()函数,让主线程知道子线程的状态,并在主线程更新UI。

E. Android: 一个Activity开辟的线程,在这个Activity调用finish()的时候会强制关闭这个线程吗

不会,你可以在onDestory中手动终止该线程

热点内容
快捷键打开Linux终端 发布:2025-01-06 01:29:58 浏览:196
python有什么开发 发布:2025-01-06 01:29:57 浏览:476
怎么上传视频腾讯视频怎么下载不了 发布:2025-01-06 01:29:18 浏览:264
手机搭建我的世界基岩版服务器 发布:2025-01-06 01:19:20 浏览:890
西门子pid编程 发布:2025-01-06 01:15:26 浏览:630
sql日期条件 发布:2025-01-06 01:13:57 浏览:410
樱花映射服务器要怎么下载 发布:2025-01-06 01:03:05 浏览:721
我的世界147服务器地址大全 发布:2025-01-06 00:57:44 浏览:205
pta自己编译器正确答案错误 发布:2025-01-06 00:53:14 浏览:128
常用存储卡 发布:2025-01-06 00:50:16 浏览:113