`
zhenzxie
  • 浏览: 66926 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android学习之路——4.Activity简介

阅读更多
1.Activity在系统被Activity堆栈管理着,每当一个新的Activity启动,它将放在堆栈的顶端成为运行着的Activity,先前的那个Activity在堆栈中一直保持在它的下面,不能放到前景,直到新的Activity退出。

2.四个重要的状态:①在前景时Activity是运行着的。②当Activity失去焦点,但没有全部被覆盖时,它被暂停(paused)了。它还是活着的,维持这所有的状态和成员信息,并且还依附着window manager,但是它可能在系统低内存时被杀死。③Activity被完全覆盖,它结束(stopped)了,但是维持这所有的状态和成员信息,可能在系统低内存时被杀死。④当它从暂停或者结束重新显示在前景时,它必须要重新启动,重载先前的状态。

3.关于Activity生命周期系统留出的钩子(API中原文:All of these are hooks that you can override to do appropriate work when the activity changes state.):

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

4.当Activity要被杀死时,我们要使用onPause()来记录重要数据到存储体中,除此之外,onSaveInstanceState(Bundle) 方法会在Activity转移到后台状态之前被调用,这样就可以在那之前保存下数据到给定的Bundle中,在下一次oncreate(Bundle)放在可以接收到该Bundle。当时onPause()比onSaveInstanceState()更重要,因为后者并不是Activity生命周期中的一环,不是每一次都会调用。还有一个方法onRestoreInstanceState()。

5.当Activity的配置(configuration)变化时,Activity直接跳过生命周期,调用onDestroy()销毁Activity,然后重新创建一个Activity,调用onCreate(Bundle),其中Bundle是来自于onSaveInstanceState(Bundle).也可以自己在Manifest.xml中使用android:configChanges属性,通知当某些configuration变化时,自己会在onConfigurationChanged(Configuration) 中处理,而不需要系统重新启动这个Activity。如果是注册之外原因引起的变化,还是会重启这个Activity,而不调用onConfigurationChanged(Configuration)

6.startActivity(Intent)方法可以启动一个新的Activity。当我们需要Activity结束时给我们返回结果,那么可以调用startActivityForResult(Intent, int),其中的int指明了Activity的编号(用来区别Activity的),我们可以在回调方法onActivityResult(int, int, Intent)中处理Activity结束后的事务。当Activity结束是调用setResult(int)来返回结果给它的父Activity。

7.启动一些特别的Activity是需要一定权限的,在Manifest.xml文件中使用
<uses-permission>来声明,比如:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

8.进程的生命周期,系统尽可能长的运行他们,但是当内存低的时候,系统会杀死一定的进程。进程的优先级是按照Activity的生命周期来排的。最重要的是在前景的Activity所在进程,接下来是可视的Activity所在的进程,接着是后台Activity所在的进程,最后的空进程。Service和BroadcaReceiver所在的进程也比不可视的Activity所在的进程优先级高。

9.当Activity按了back键后它会中堆栈弹出并销毁,前一个Activity 恢复(resume)

10.Activity在Manifest.xml中的属性和值:
(更多请参考:android-sdk\docs\guide\topics\manifest\activity-element.html)

android:configChanges=["mcc", "mnc", "locale", "touchscreen", "keyboard","keyboardHidden", "navigation", "screenLayout", "fontScale", "uiMode","orientation", "screenSize", "smallestScreenSize"]

android:hardwareAccelerated=["true" | "false"]
android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" |  "sensorLandscape"|"sensorPortrait" | "sensor" | "fullSensor" | "nosensor"]

android:theme="resource or theme"

android:windowSoftInputMode=["stateUnspecified",stateUnchanged", "stateHidden","stateAlwaysHidden", "stateVisible","stateAlwaysVisible","adjustUnspecified","adjustResize", "adjustPan"] > 
等等...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics