zygote&AsyncTask的doInBackgroud方法
来源:互联网 发布:文件上传webshell漏洞 编辑:程序博客网 时间:2024/06/11 03:09
zygote
有时候会遇到报有关zygote的错,这是个什么东西呢,简单理解就是孵化池。
当每个新的进程启动虚拟机的一个新的实例时,如果每次都加载所有必要的基类,则效率会很低。android把每个应用放在独立的进程中,他会利用底层linux操作系统的fork操作,通过模板进程生成新的进程,该进程在启动新的虚拟机实例时能够达到最优状态,该模板进程的名字就是zygote。zygote模板进程是dalvik虚拟机的一个实例,它包含一组预加载类及zygote进程的其他方法,这些进程通过fork操作生成zygote的副本。
AsyncTask适合运行历时非产短的任务,比如几秒钟,不适合历时数分钟或者更长的进程。因为生成任务的aty有生命周期,如果产生AsyncTask后接了个电话,可能会发现aty已被销毁
AsyncTask的doInBackgroud方法,因为他是在另一个线程执行的,只能引用作用域内的变量,这样才是线程安全的,下面是个错误的用法:
//.... some class int mCount;public void initButton1(Button button){mCount = 0;button.setOnClickListener(){@SuppressWarnings("unchecked")@overridepublic void onClick(View v){@overrideprotected void doInBackground(Void...args){mCount++;//!!!!not thread safereturn null;}}.execute();}});}
android ui是单线程的
为了保证ui的及时响应,耗时超过几毫秒或者需要好几百条指令的任务都不应该在主线程操作。
AsyncTask运行任务简单,但是doInBackground是在另一个线程。不能写任何其他线程可见的状态,也不能读任何其他线程可写的状态。这也包括其参数。
不可改变的对象是在并发线程之间传递信息的重要工具。
1 0
- zygote&AsyncTask的doInBackgroud方法
- AsyncTask doInBackgroud not running
- android 的Zygote 分析
- android 的Zygote 分析
- Zygote的分析
- zygote system_server的启动
- Zygote进程的启动
- Zygote的启动过程
- zygote
- Zygote
- ZYgote
- Zygote
- Zygote
- AsyncTask方法
- AsyncTask的cancel方法失效的原因
- AsyncTask和Activity的生命周期方法
- AsyncTask内的各个方法调用顺序:
- AsyncTask内的各个方法调用顺序
- 看“坦克大战”游戏的要求的一些思考
- 开课第一天
- NativeCodeLoader: Unable to load native-hadoop library for your platform
- andorid中Button的OnClickListener的三种实现方法
- hdu4751 二分图的判断
- zygote&AsyncTask的doInBackgroud方法
- Andriod SDK 和ADT的安装和使用
- nyoj-1159-XX和OO
- 基于注解的SpringMVC简单介绍
- Js关闭当前页面/窗口(兼容浏览器问题)
- php增加mysqli扩展
- SharedPreferences
- JavaSe——IO流_Part1
- Nginx开启多SSL证书支持--TLS SNI support