胖蔡说技术
随便扯扯

Android Activity介绍

Android开发过程中Activity负责Android系统的界面展示功能,也是与用户交互的核心功能。对于用户来说,Activity可能就是Android应用,因此对于Android开发来说Activity的了解和使用显得尤其重要。Activity负责创建一个窗口用于展示给用户看,而对于我们,所需要做的事就是决定展示怎样的狂口以及怎样的交互。Activity实现只需要通过创建一个继承自Acitvity的类即可,然而需要其能在整个系统作为一个界面组件使用的话还需要将其向系统注册,即在清单文件注册activity(四大组件均需注册静态或动态)。清单文件如下:

<manifest>
     <application>
       ......

         <activity android:name=".MainActivity>
             <intent-filter>
                 <action android:name="android.intent.action.MAIN >
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
     </application>

 </manifest>
 

对于Activity的理解可以通过如下问答方式来了解:

Activity是什么?

Activity app与用户交互的应用界面

Activity如何使用?

创建一个Activity类,导入一个界面布局文件,并将该activity注册到application的清单文件中,通过action或者类名的方式跳转启动activity.

Activity有哪些周期?

Activity 常见的周期主要分为三对:

  • 组件创建和销毁(onCreate、onDestroy)
  • 组件的启动和停止(onStart、onStop)
  • 组件的可见和不可见(onResume、onPause) 一般的启动调用顺序为onCreate->onStart->onResume->onPause->onStop->onDestroy。当Activity中途退出会调用 onRestart->onStart->onResume->onPause->onStop->onDestroy.流程可见下图:
activity生命周期
activity启动流程
  1. Activity管理的数据结构是什么?这种结构的特点有哪些?

AMS管理activity采用的是栈结构,栈有两个动作:进栈和出栈,栈的特点是先进后出、后进先出。

Activity的启动方式有哪些?

acitivity的启动方式有四种:

  • standard 标准模式(默认为标准模式),每次启动一个Activity都是重新创建一个activity进栈,而不考虑是否已经存在该activity的对象。
  • singleTop 栈顶模式,当前栈顶为需要跳转的activity时则不需重新创建新的activity,直接返回栈顶activity即可,返回activity不会再调用onCreate,而是调用onNewIntent
  • singleTask 栈内复用模式,当前栈中存在需要跳转的activity时,直接将该activity上面的activity情况,将该activity置于栈顶,此时不会再调用onCreate,而是调用onNewIntent。当不存在时创建一个activity进栈。
  • singleInstance 全栈复用模式,这种模式下的activity在创建时会被单独放在一个栈中(创建一个新栈、创建一个activity进栈),若activity存在不需要重新创建,此时不会再调用onCreate,而是调用onNewIntent

Activity的状态有哪些?

Activity 的状态包含:

  • 运行中
    当前activity位于栈顶,前台可见
  • 暂停
    当前activity被另一个透明或者dialog样式的Activity覆盖,与窗口管理器保持连接,但已失去焦点,不可与用户交互。 –
  • 停止
    Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
  • 杀死
    Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

scheme跳转协议?

Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。协议格式:

"schme://localhost:8000/gift?id=80&name=tt"
 
  • schme 协议名称
  • localhost 地址域
  • 8000 端口号
  • gift 路径
  • idname为参数
  • activity的使用
<intent-filter> 
  <data android:host="localhost" android:path="/gift" android:port="8000" android:scheme="schme"/> 
  <category android:name="android.intent.category.DEFAULT"/> 
  <action android:name="android.intent.action.VIEW"/> 
  <category android:name="android.intent.category.BROWSABLE"/> 
</intent-filter>
  • 调用方式
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(“schme://localhost:8000/gift?id=80&name=tt”)));
赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » Android Activity介绍
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏