概述
.net开发安卓入门 - Activity
- Activity
- MainActivity
- 创建一个新的Activity和他的UI
- SecondActivity.cs
- second_activity.xml
- ==MainActivity增加一个按钮调用Activity==
- 运行效果
- Activity特性中的LaunchMode四种启动方式
- standard
- singleTop
- singleTask
- singleInstance
- 生命周期
- OnCreate
- OnStart
- OnResume
- OnPause
- OnStop
- OnDestroy
- OnRestart
- 引用
- 同系列文章推荐
Activity
Activity 是 Android 应用程序的基本构建基块,可以存在于许多不同的状态中。 活动生命周期以实例化开始,以销毁结尾,并包含介于两者之间的许多状态。 当活动更改状态时,调用适当的生命周期事件方法,通知即将发生的状态更改的活动,并允许它执行代码以适应该更改。 本文将检查活动的生命周期,并解释了每个状态更改期间活动所承担的责任,这些更改是行为良好、可靠应用程序的一部分。
MainActivity
创建程序是自带的第一个Activity,相当于控制台程序的Program.cs文件,Winform中的Form1文件。这里为什么不是相当于winform中的program文件呢,是因为MainActivity 有一个特性。
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
特性中的Label和Theme不赘述了,需要关注一下MainLauncher,表示程序入口。
创建一个新的Activity和他的UI
新建一个名字叫SecondActivity的类,指定他的布局,代码如下
SecondActivity.cs
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 我的第一个安卓程序
{
//设置了一个横屏特性
[Activity(Label = "SecondActivity", ScreenOrientation= Android.Content.PM.ScreenOrientation.Landscape)]
public class SecondActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//加载第二个视图文件
SetContentView(Resource.Layout.second_activity);
}
}
}
second_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是第二个视图"/>
</LinearLayout>
MainActivity增加一个按钮调用Activity
[Java.Interop.Export]
public void ShowSecondActivity(View viwe)
{
StartActivity(typeof(SecondActivity));
}
运行效果
Activity特性中的LaunchMode四种启动方式
任务栈
每个应用都有一个任务栈,是用来存放Activity的,
功能类似于函数调用的栈,先后顺序代表了
Activity的出现顺序
standard
每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈
singleTop
如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例
singleTask
如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop
singleInstance
如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例
生命周期
OnCreate
OnCreate 是创建活动时要调用的第一种方法。 OnCreate 始终重写以执行活动可能需要的任何启动初始化,例如:
- 创建视图
- 初始化变量
- 将静态数据绑定到列表
OnStart
在完成后,系统OnCreate始终调用 OnStart。 如果活动需要在活动变为可见之前执行任何特定任务(例如刷新活动的当前视图值),则活动可能会重写此方法。 Android 将在此方法后立即调用 OnResume 。
OnResume
当活动准备好开始与用户交互时,系统会调用 OnResume 。 活动应重写此方法以执行如下任务:
- 提高帧速率 (游戏开发)
- 开始动画
- 侦听 GPS 更新
- 显示任何相关的警报或对话框
- 连接外部事件处理程序
OnResume 很重要,因为执行的任何操作都应在未完成 OnPause 中 OnResume,因为它是在将活动带回生命时保证执行 OnPause 的唯一生命周期方法。
OnPause
当系统即将将活动置于后台或活动部分遮盖时,将调用 OnPause。 如果需要,活动应重写此方法:
将未保存的更改提交到持久性数据
销毁或清理消耗资源的其他对象
降低帧速率和暂停动画
取消注册外部事件处理程序或通知处理程序 (,即绑定到服务) 。 必须这样做才能防止活动内存泄漏。
同样,如果活动已显示任何对话框或警报,则必须使用 .Dismiss() 该方法清理它们。
有两种可能的生命周期方法将在以下之后 OnPause调用:
- OnResume 如果要将活动返回到前台,将调用该活动。
- OnStop 如果在后台放置活动,将调用该活动。
OnStop
当活动不再对用户可见时,将调用 OnStop。 发生以下情况之一时会发生此情况:
正在启动一个新活动,并正在覆盖此活动。
正在将现有活动带到前台。
正在销毁活动。
OnStop 在低内存情况下可能并不总是调用,例如,当 Android 因资源不足而无法正确设置活动背景时。 因此,最好不要依赖 OnStop 在准备活动进行销毁时调用。 下一个生命周期方法,在此生命周期之后调用的方法将是 OnDestroy 活动即将消失,或者 OnRestart 活动将返回以与用户交互。
OnDestroy
OnDestroy 是在活动实例被销毁并完全从内存中删除之前在活动实例上调用的最终方法。 在极端情况下,Android 可能会终止托管活动的应用程序进程,这将导致 OnDestroy 不调用。 大多数活动不会实现此方法,因为大多数清理和关闭已在方法和OnStop方法中OnPause完成。 OnDestroy通常重写此方法以清理可能会泄漏资源的长时间运行的任务。 其中一个示例可能是启动的 OnCreate后台线程。
在销毁活动后,不会调用任何生命周期方法。
OnRestart
在活动停止后调用 OnRestart,然后再再次启动它。 例如,当用户在应用程序中的活动时按下主页按钮时,就会有一个很好的例子。 发生这种情况 OnPause 时 OnStop ,将调用方法,并将活动移动到后台,但不会销毁。 如果用户随后使用任务管理器或类似应用程序还原应用程序,Android 将调用 OnRestart 活动的方法。
对于应在哪种类型的逻辑中 OnRestart实现,没有一般准则。 这是因为 OnStart 始终调用活动,而不考虑正在创建或重新启动活动,因此活动所需的任何资源都应初始化, OnStart而不是 OnRestart初始化。
下一个生命周期方法将在OnStart之后OnRestart调用。
引用
https://learn.microsoft.com/zh-cn/xamarin/android/app-fundamentals/activity-lifecycle/
同系列文章推荐
.net开发安卓入门 - 环境安装
.net开发安卓入门 - Hello world!
.net开发安卓入门 - 基本交互(Button,输入EditText,TextView,Toast)
.net开发安卓入门 - 布局与样式
.net开发安卓入门 - Activity
.net开发安卓入门 - Notification(通知)
.net开发安卓入门 - 四大基本组件
.net开发安卓入门 - Service (服务)
.net开发安卓入门 - 打包(.apk)
.net开发安卓入门 - ImageView 显示网络图片
.net开发安卓入门-文件操作与配置操作
.net开发安卓入门-Dialog
.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)
vs2022 实现无线调试安卓(Windows)
.net开发安卓从入门到放弃
.net开发安卓从入门到放弃 最后的挣扎(排查程序闪退问题记录-到目前为止仍在继续)
.net开发安卓入门 -记录两个问题处理办法
最后
以上就是成就黑裤为你收集整理的.net开发安卓入门 - ActivityActivityMainActivity创建一个新的Activity和他的UIActivity特性中的LaunchMode四种启动方式生命周期引用同系列文章推荐的全部内容,希望文章能够帮你解决.net开发安卓入门 - ActivityActivityMainActivity创建一个新的Activity和他的UIActivity特性中的LaunchMode四种启动方式生命周期引用同系列文章推荐所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复