赞
踩
(一)Activity的简介:
Activity意为活动,他是最容易吸引到用户的地方。主要用于与用户进行交互。一个应用程序一般有多个活动,他们之间彼此保持着弱的绑定状态。每个程序都有一个主界面,当应用启动后,呈现给用户。为了能呈现给用户精彩的体验。每一个Activity都可以启动另外一个Activity.新启动的Activity就被放到栈顶,之前的Activity就被停止或者销毁,系统一般把停止的Activity压入一个栈。栈遵循后进先出的机制。
Activity有三大状态:
(运行,停止,销毁)
运行状态:Activity位于前台,用户可见,可以得到焦点并进行交互。
停止状态:可见或者不可见,Activity失去焦点。
销毁状态:Activity的进程结束。
七大方法:
onCreate()创建时回掉该方法
onStart()启动时回掉该方法
onRestart()重新启动Activity调用该方法
onResume()恢复Activity时调用。一般在onStart方法后调用
onPause()暂停Activity被调用
onStop()停止Activity调用
onDestroy())销毁Activity调用,且只被调用一次。
外加四种启动模式:
加载模式的出现是因为Android采用Task来管理多个Activity,当我们启动一个Activity,Android会先创建一个Task,然后去启动这个Task的入口(即过滤器中配置的MAIN和LAUNCHER),加载布局界面。
standard:(标准模式) 每次Android为Activity创建一个新的实例,并将Activity添加到当前的栈中,这种模式不会启动新的Task,新的Activity会被加入原有的栈中。
singleTop 与标准模式相似,但是如果要启动的Activity已经位于栈顶,Android不会重新创建Activity的实例,直接用。如果要启动的Activity不位于栈顶,系统会重新创建Activity,与标准模式一样。
singTask在同一个Task只能有一个实例。如果Acivity实例不存在,则创建实例并加载到栈顶。如果存在一个实例,此时与singleTop一样。如果存在多个实例,则系统会把要启动的Activity上面的实例移出栈中,使要加载的Activity位于栈顶。
singleInstance无论从那个Task启动目标Activity,只会创建一个Activity实例,并使用一个全新的Task栈来加载实例。
(二)创建一个Activity:
必需实现onCreate方法在Activity创建时被调用,该方法只被调用一次。在实现该方法的同时,必须调用setContentView()来指定用户布局界面Layout.Layout是一组继承了View或者ViewGroup的布局。当然你也可以自己去定义布局或者组件,然后继承他们。
定义布局最常用的还是XML,我建议能使用XML的地方,尽量使用XML,因为这种方式可以提高你的代码可维护性。保证你的业务逻辑与用户交界面分开。你可以在XML中可视化设置你精彩布局,然后通过setContentView()传递布局文件的ID来让java代码与XML绑定。XML中的组件都可以通过ID绑定到java代码中。
在AndroidManifest(文件清单)注册:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
//通过package指定了程序的包名 package="com.example.wc.android_1"> <application android:allowBackup="true"
//设置图标 android:icon="@mipmap/ic_launcher"
//指定活动中标题栏的内容 android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"
//风格 android:theme="@style/AppTheme"> <activity android:name=".MainActivity">
//过滤器
<intent-filter>
//指定主界面入口 <action android:name="android.intent.action.MAIN" /> //让系统启动 <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>上面是一个文件注册,活动的注册声明要放在 </ application > 标签中,这里是用<activity/>标签来对活动进行注册的。使用android:name来指明具体注册哪一个活动,上面的.MainActivity其实就是 com.example.wc.android_1 .MainActivity的缩写。一旦你发布了应用,就不能改变名字。
private void pickContact() { // Create an intent to "pick" a contact, as defined by the content provider URI Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT_REQUEST); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // If the request went well (OK) and the request was PICK_CONTACT_REQUEST if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) { // Perform a query to the contact's content provider for the contact's name Cursor cursor = getContentResolver().query(data.getData(), new String[] {Contacts.DISPLAY_NAME}, null, null, null); if (cursor.moveToFirst()) { // True if the cursor is not empty int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME); String name = cursor.getString(columnIndex); // Do something with the selected contact's name... } } }
这个例子展示了使用onActivityResult()
来获取结果的基本方法。 第一步要判断请求是否被成功响应,通过判断resultCode
是不是
RESULT_OK
—, 然后判断这个响应是不是针对相应的请求— ,此时只要判断requestCode
和发送时提供的第二个参数 startActivityForResult()
是否相匹配。 最后,查询 Intent
中的data信息。 (data
参数)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。