探索Android应用开发(七)
学习目标:
- 使用Intent启动Activity
学习目的:
- 掌握Intent基础概念
学习收获:
许多平台上的移动应用都是运行在自己的沙箱上,彼此之间相互隔离,并且和系统硬件、原生组件的交互受到严格的限制。Android应用也是基于沙箱,但是不同的是,他们可以使用Intent、Broadcast Receivers、Adapters、Content Providers和Internet来突破沙箱的限制。
你可以使用Intent支持 Android设备上的应用组件之间交互,而不用管他们是哪些应用的组成部分。这就是把“一堆”独立的组件变成了一个单一的、内联的系统。Intent常见的用途之一就是启动Activity,不论是隐型的,还显式的。Intent也可以用来在系统中广播消息。任何应用可以注册一个Broadcast Receiver进行监听。这就允许了你可以创建一个基于事件驱动的应用。Android使用广播Intent“宣布”系统事件,例如Internet连接状态的改变。
应用程序是由若干个互相关联的屏幕,也就是Activity,组成,为了要连接他们,你可能要显式地声明打开哪个 Activity。为了显式选择Activity类型来启动,需要创建一个Intent,指明当前application context,和要启动的Activity类。如下所示:
@Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Intent intent = new Intent(this, PurseEdit.class); intent.putExtra(PurseDbAdapter.KEY_ROWID, id); this.startActivityForResult(intent, ACTIVITY_EDIT); } |
新的Activity创建以后,就会被移到Activity stack的最上面。在这个新的Activity上调用finish,就会关闭它,并从stack中移除。此外,用户也可以使用设备的Back按钮,导航到此前那个Activity。
当使用startActivity时,新执行的Activity结束后,应用并不会收到任何的通知。为了能够追踪,需要使用startActivityForResult方法。