安卓Activity学习笔记

一.Activity简介

Activity是Android应用的关键组件,用于与客户交互。

有助于完成系统和应用程序之间的以下重要交互:

  • 跟踪用户当前关注的内容(屏幕上的内容),以便系统继续运行托管 Activity 的进程。
  • 了解先前使用的进程包含用户可能返回到的已停止 activity,并更高地确定这些进程的优先级,以确保这些进程保持可用。
  • 帮助应用处理终止其进程的情况,以便用户能够返回 Activity 并恢复其先前的状态。
  • 提供一种方式,让应用实现彼此之间的用户流,并让系统协调这些流。这方面的一个主要示例是分享。

二.Activity的基本用法

(1)为了确保能够使用 activity,必须在AndroidManifes清单中声明这些 activity 及其某些属性。       

        1.如需声明 activity,需在清单文件中添加 <activity> 元素,其唯一必需属性是 android:name,用于指定 activity 的类名称,此外可以自行添加定义标签、图标或界面主题等 activity 特性的属性。

        2.在 <activity> 元素中声明 <intent-filter> 属性可指定activity 可以响应的 intent 类型。此元素的定义包括 <action> 元素,以及可选的 <category> 元素和/或 <data> 元素。以下两句生明表示将该activity指定为程序的主activity.

<activity
 android:name=".MainActivity"
 android:exported="true"
 android:label="@string/app_name"
 android:theme="@style/Theme.ActivityTest">
  <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

         3.使用<uses-permission> 标签来声明权限,防止对用户比较敏感的操作,如获取隐私等导致程序崩溃,以下是在社交媒体上分享帖子的权限

android:permission=”com.google.socialapp.permission.SHARE_POST”

 (2)  Activity绑定布局

    1.借用kotlin-android-extensions插件

    在阅读《第一行代码》中,里面大量使用到了kotlin-android-extensions插件的findViewById(),

我也没在意,因为个人因素,读了半本之后才去实践,发现以下代码报错才已经被废除了

import kotlinx.android.synthetic.main.fragment_place.view.*

  以下是《第一行代码》中Activity实现绑定布局,用作对比

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d("data", "onCreate execute")
    }

}

  不过,作者也发布了转换使用ViewBinding的方法,学起来也不难,大家可以直接去搜作者文章,我毕竟只是自己总结(kotlin-android-extensions插件也被废弃了?扶我起来-CSDN博客

   2.借用ViewBinding绑定布局

  首先,需要在build.gradle中添加依赖,找到buildFeatures,添加以下代码

bulidFeatures
{
  viewbinding = true
}

 然后,androidstudio会自动生成布局文件对于的Binding类,记得导入

import com.example.包名.databinding.ActivityMainBinding

首先调用activity_main.xml布局文件对应的Binding类ActivityMainBinding的inflate()函数去加载该布局,inflate()函数接收一个LayoutInflater参数,在Activity中是可以直接获取到的。

接下来调用Binding类的getRoot()函数可以得到activity_main.xml中根元素的实例,调用getTextView()函数可以获得id为textView的元素实例。         

把根元素的实例传入到setContentView()函数当中,这样Activity就可以成功显示activity_main.xml这个布局的内容了。然后获取TextView控件的实例,并给它设置要显示的文字即可。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        binding.textView.text = "Hello World"
    }

}

三.Activity的生命周期

 (1)Activity的四种状态

        1.运行状态。此时Activity位于栈顶。

        2.暂停状态。此时Activity不处于栈顶,但仍然可见,如对话框形式的Activity。

        3.停止状态。此时Activity不处于栈顶,且完全不可见,此时系统仍会为Activity保存状态和成员变量。

        4.销毁状态。此时Activity已被移除栈,被系统回收。

 (2) Activity的七个回调方法

        1.OnCreate()。在Activity第一次创建时调用,完成Activity的初始化步骤,加载布局,绑定事件等等。此方法会接收参数 savedInstanceState,是包含 activity 之前保存状态的 Bundle 对象,通常为空,可以借用该对象与onSavedInstanceState()方法来保存数据,来解决Activity被回收后重新创建时临时数据丢失的问题。

        2.OnStart()。在Activity由不可见变为可见时调用,此时 activity 准备进入前台并实现互动。

        3.OnResume()。在Activity准备好与用户交互时调用,此时一定处于栈顶,是运行状态。

        4.OnPause()。系统准备启动或恢复另外一个Activity时调用。

        5.OnStop()。在Activity完全不可见时调用。如果启动对话框形式的Activity,不会执行该方法。

        6.OnDestory()。在Activity被销毁前调用。

        7.OnRestart()。在Activity由停止状态变为运行状态时调用。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值