Android(二)

活动生命周期(le cycle de vie des activite)

进程(processus)

进程管理

  • 在不同的GNU/LInux系统中不同
  • 目的:优化应用程序;节省资源;管理任务优先级

一个Android应用是一个Unix进程

  • 可能有一个虚拟据(Dalvik)执行

  • 一个虚拟机aspects的闭包(运行时ART android runtime)

    这个进程有一个特殊的生命周期

几个活动生命周期的示例图

活动的生命周期图

活动的生命周期图2

活动的生命周期图3

注意:执行AlterDialog弹出警告框,这不是一个新的activity,所以没有onPause()*

进程销毁

onDestory()

优先级等级

  1. 屏幕显示的进程
  2. 可见的进程
  3. 服务进程
  4. 后台任务进程
  5. 空进程(已结束,存在cache中的进程)

Taches asynchrones(同步的任务)

主进程(le thread principal)

  • 刷新界面
  • 处理用户相关事务
  • 处理messages
  • 执行services

不要阻断UI线程

不要从UI线程外部access到UI toolkit

管理线程冲突

两种解决方法:

  • 给图像界面元素加锁
  • 只用一个Thread管理图形界面元素

委托图形界面处理:

  • Activity.runOnUiThread(Runnable)
  • View.post(Runnable)
  • View.postDelayed(Runnable,long)

异步任务AsyncTask<U,V,W>

AsyncTask

JSON

用HTTP读JSON objets:1. 把请求写入一个异步任务 2. 使用这个AsyncTask类

要使用HTTP,有一个封装好的类:HttpURLConnection

HttpURLConnection类示例图

自己写一个readStream()方法用来读入数据流(flux de donnees)来构建结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private String readStream(InputStream is) throws IOException {

StringBuilder sb = new StringBuilder();

BufferedReader r = new BufferedReader(new InputStreamReader(is),1000);

for (String line = r.readLine(); line != null; line =r.readLine()){

sb.append(line);

}

is.close();

return sb.toString();

}