活动(Activity)---《第一行代码Android》笔记

Activity函数

onCreateOptionsMenu(Menu menu)

加载menu

onOptionsItemSelected(MenuItem item)

menu item点击事件处理

finish()

销毁活动

onSaveInstanceState(Bundle bundle)

活动在被回收前调用。bundle用于绑定数据,会在活动调用onCreate()时传入

活动生命周期

返回栈 Back Stack

Android是使用任务(Task)管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈就是返回栈。先进后出。

活动状态

  • 运行状态:活动处于栈顶,处于运行状态,一般系统不回收。
  • 暂停状态:不在栈顶,但仍然可见。此时活动仍然存活,一般系统也不回收。
  • 停止状态:不在栈顶,并完全不可见。仍保存活动相应状态和成员变量,内存吃紧时可能被系统回收。
  • 销毁状态:从栈中移除后变为销毁状态,系统回收。

活动生命周期

  • onCreate():活动第一次被创建时调用。
  • onStart():活动由不可见变为可见时调用。
  • onResume():在活动准备好和用户进行交互时调用。此时是活动肯定是运行状态。
  • onPause():系统准备去启动或恢复另一个活动时调用。通常在这个方法中释放资源或保存关键数据。这个方法执行一定要快,不然会影响新的栈顶活动的使用。
  • onStop():活动变为完全不可见时调用。与onPause()的区别是,如果启动的新活动是对话框式的活动,则onPause()执行,onStop()不执行
  • onDestroy():活动在销毁之前调用,之后活动变为销毁状态。
  • onRestart():活动由停止转为运行状态之前调用,即活动重新启动。

活动启动模式

  • standard:默认的。每次启动活动都会创建一个新的实例放入栈顶。
  • singleTop:如果栈顶已经是该活动实例,直接使用它。如果没有则创建新实例。
  • singleTask:如果栈中已经有活动的实例,则直接使用它,并把它上面的所有活动出栈。如果没有则创建新实例。
  • singleInstance:创建这个模式的活动时,会启用一个新的返回栈来管理该活动。可用于不同程序间共享同一个活动实例。

启动活动设置

AndroidManifest.xml中设置

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

Intent 启动另外一个活动、传递数据

显式intent

Intent intent = new Intent(MainActivity.this, NormalActivity.class);
startActivity(intent);

隐式intent

隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动。
AndroidManifest.xml文件中activite/category中值

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

则启动此activite的intent如下:

Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
startActivity(intent);

调用外部程序活动

隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动。下面是启动浏览器打开百度的代码:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

同时,我们可以在标签中配置标签,用于更精准地指定当前活动能够相应什么类型的数据。例如:

<activity android:name=".ThirdActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="http" />
    </intent-filter>
</activity>

data的值可以有5种:android:scheme/android:host/android:port/android:path/android:mimeType

传递数据

intent.putExtra(“”,data);把数据加入intent.
intent.getStringExtra(“”)、intent.getIntExtra(“”)、intent.getBooleanExtra(“”);得到intent中的数据

返回数据给上一个活动

活动1启动活动2时,使用startActivityForResult(intent,1);方法,其中的1需要是唯一值。
活动2在销毁时,调用setResult(RESULT_OK,intent);方法,把intent中的数据返回给活动1,intent实例化时调用空参数的构造函数。
活动1重写onActivityResult(int requestCode,int resultCode,Intent intent);函数获取活动2销毁时发送的数据。requestCode是启动活动时的请求吗,就是上面的1。resultCode是返回数据时传入的处理结果,一般有RESULT_OK和RESULT_CANCELED两个值。intent就是返回的数据。

Toast

Toast.makeText(FirstActivity.this, "you clicked button1", Toast.LENGTH_SHORT).show();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值