Android开发学习笔记(Android基础知识)

发现实在是没有写笔记的习惯,每次都是写了一点后就没兴趣继续写下去了。随便摘抄点好了。

Activities and Tasks

task是一组相关的Activities,保存在一个堆栈中,给用户的感觉就是一个应用程序。简单的理解就是,每开一个新的Activities,就将Activities放到堆栈的最上面,按下back后就将当前Activities移除,激活堆栈上的下一个Activities。

Affinities and new tasks

其实我没太明白affinity的含义,在我看来似乎affinity有点类似taskId,标示它应该属于哪个task。

Launch modes

启动模式总共有四种

  • "standard" (the default mode)
  • "singleTop"
  • "singleTask"
  • "singleInstance"

Clearing the stack

默认情况下,如果用户长时间离开Task,系统会清理掉除ROOT Activity外的所有Activities。这个做法的依据是,如果用户太久没回来,用户肯定已经忘了自己最初做了啥,回来肯定是要做一些新事情。当然我们可以通过给activity设置一些属性来改变这个行为,比如alwaysRetainTaskState等。

Starting tasks

当需要一个activity作为整个应用程序的进入点时,我们给它一个intent filter,其中action为 "android.intent.action.MAIN",category为"android.intent.category.LAUNCHER"。这种filter使得一个图标和一个标签显示在程序启动器中,使用户可以启动该task或者返回到该task。

Processes and Threads

同一个application都运行在同一个Processes里面。

为了保证Activity界面不阻塞,耗时工作应当放到Thread中。

Android有提供一个轻量级的RPC机制。

Activity lifecycle

Activity有三种基本状态:

  • active 当前活动窗口
  • paused 被其他窗口挡住部分
  • stopped  被完全挡住,在系统需要回收资源的时候会被kill

activity在进行状态切换的时候会触发相应的方法

  • void onCreate(Bundle savedInstanceState)
  • void onStart()
  • void onRestart()
  • void onResume()
  • void onPause()
  • void onStop()
  • void onDestroy()

Service lifecycle

一个service有以下两种用法

  • service启动后由service自己或其他人关闭。
  • 模块通过接口连接service(bindService() ),在调用unbindService()后关闭。

Broadcast receiver lifecycle

一个broadcast receiver只有一个回调方法:
void onReceive(Context curContext, Intent broadcastMsg)

broadcast receiver只有在执行onReceive的时候被认为是激活的。

当一个广播消息的响应非常耗时间时,需要新建一个新的线程来运行该操作。如果onReceive()创建了这个线程并返回,则整个进程,包括新创建的线程会被认为是非活动的(除非有其它的component为活动的),该线程有可能会被kill掉。解决方案是用onReceive()启动一个 service并让该service完成这个工作,那么系统直到这个进程仍然是活跃的。

END

到这里Android的基础知识也了解得差不多了,接着就该进军UI了。

Android的UI编程,主要注意的是:界面在XML中定义,为XML中的界面元素生成唯一的ID,并保存在自动生成的R.java中。程序中通过id查找相关界面元素,实现和界面的关联。除此之外的开发,和传统的java swing啥的没太多区别。

下面考虑写个简单的Android应用,一边学习,一遍实践。