xamarin学习笔记A03(安卓Activiy)

来源:互联网 发布:mac系统网游加速器 编辑:程序博客网 时间:2024/06/05 15:51

(每次学习一点xamarin就做个学习笔记视频来加深记忆巩固知识)
如有不正确的地方,请帮我指正。
Activity(活动)是一个可以让屏幕提供用户交互动作的组件。
Android系统中所有Activity是放在Activity栈中。启动一个新Activity时,就会被压入Activity栈的顶部。如果返回则会弹出栈顶的Activity。
这里写图片描述

Activity的生命周期,一共七个环节。
1. OnCreate() 在活动第一次被创建时调用。一般做些初始化工作,例如加载布局、绑定事件等。
2. OnStart() 在活动变得可见之前调用。
3. OnResume() 执行完这个方法后,活动处于运行状态,可以与用户进行交互了。
4. OnPause() 转到另一个活动时会调用。这个方法执行要快,否则影响另一活动的使用。
5. OnStop() 活动完全不可见时调用。
6. OnDestroy() 在活动被销毁之前调用。
7. OnRestart() 活动由停止状态变为运行状态之前调用。
这里写图片描述

活动的启动模式
一共有四种,standard, singleTop, singleTask和singleInstance。
1. standard模式是默认启动模式。不管这个活动在Activity栈中是否已经存在,每次启动都会新建一个新的activity实例。
2. 如果一个活动是用的singleTop模式,系统只检查activity栈顶是不是存在该活动的实例,是则不会新建了,否的话还是会新建一个活动。
3. 如果一个活动是用的singleTask模式,系统会检查整个activity栈中是不是存在该活动的实例,存在的话会把这个活动之上的所有活动出栈,直接使用该实例,不存在则新建一个实例。
4. 如果一个活动是用的singleInstance模式,系统会使用一个新的activity栈来管理它。例如我们程序中有一个活动要被其它程序调用。

向下一个活动传递数据
例如:第一个活动传递
Intent intent = new Intent(this, typeof(SecondActivity));
intent.PutExtra(“UserName”, “张三”);
intent.PutExtra(“Age”, 18);
StartActivity(intent);
第二个活动接收
string userName = this.Intent.GetStringExtra(“UserName”);
int age = this.Intent.GetIntExtra(“Age”,-1);

返回数据给上一个活动
第二个活动的主要代码
case Resource.Id.btn_ReturnMain:
Intent intent2 = new Intent(); //这个Intent仅用于携带数据
intent2.PutExtra(“Message”, “ABC”);
this.SetResult(Result.Ok, intent2); //此方法专用于向上一个活动返回数据
this.Finish(); //销毁SecondActivity
第一个活动的主要代码
Intent intent = new Intent(this, typeof(SecondActivity));
StartActivityForResult(intent, 1);

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
switch(requestCode)
{
case 1:
if(resultCode== Result.Ok)
{
string message = data.GetStringExtra(“Message”);
Toast.MakeText(this, message, ToastLength.Long).Show();
}
break;
}
}

隐式Intent
例子一:
Intent intentUntyped = new Intent(Intent.ActionDial);
intentUntyped.SetData(Android.Net.Uri.Parse(“tel:10086”));
StartActivity(intentUntyped);
例子二:
Intent intentUntyped = new Intent(Intent.ActionView);
intentUntyped.SetData(Android.Net.Uri.Parse(“http://www.baidu.com“));
StartActivity(intentUntyped);
例子三:
第二个活动写入
[IntentFilter(new string[] { “com.A03.second” }, Categories = new string[] { Intent.CategoryDefault })]
第一个活动写入
Intent intent = new Intent(“com.A03.second”);
StartActivity(intent);

详细内容在我的学习笔记视频中
CSDN资源下载地址
http://download.csdn.net/download/junshangshui/9851413

阅读全文
0 0