android学习三(Intent)

前面的博文介绍了Activity,可能学的还不太爽哦,所以接下来学习android的Intent,它是android的信使,可以进行各个组件之间进行通信了。我依然在前面的基础上进行修改开发,免的啰嗦过多的东西。没看过前面的博文的,可以先看android学习二(Activity),好了,接下来开始吧。

使用显示的Intent

1.在前面的ActivityTest基础上,我们在创建一个布局文件,文件名为second_layout.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button 2"
        />

</LinearLayout>

2.新建一个活动,取名为SecondActivity,代码为:

package com.wj.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.second_layout);
	}

}

3.进行注册活动,在AndroidManifest.xml中进行活动的注册,代码如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wj.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.wj.test.FirstActivity"
            android:label="this is firstactivity">
            <intent-filter >
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity android:name=".SecondActivity">
        </activity>

    </application>

</manifest>

4.改写FirstActivity活动中的按钮事件,修改后的主要代码如下:

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);
			}

		});

5.重写运行程序,点击button1,将跳转到SecondActivity

运行结果如上图所示,上面的就是显示的进行Intent显示的使用,应为指明了将跳转到哪一个类。下面我们在说说,怎么使用隐式的使用。

使用隐式的Intent

相比与显示的Intent,隐式的Intent含蓄了很多,它并不指明我们想要启动哪一个活动,而是指定了一系列的aciton和category等信息,然后交由系统去分析这个intent,并帮我们找出合适的活动去启动。

1.在上面的基础上我们修改成隐式的Intent,首先改写AndroidManifest.xml里面的<activity android:name=".SecondActivity">,为该注册的活动,进行intent-filter的配置,配置的内容如下:

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.wj.test.activitytest.ACTION_START"> </action>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

注意<action android:name="com.wj.test.activitytest.ACTION_START"> </action>里面的android:name,是可以自己定义的,指不过在创建Intent的时候要保证和这里的字符串一致就ok了。在aciton标签中我们指明了当前活动可以响应com.wj.test.activitytest.ACTION_START这个action,而<category>标签则包含了一些附加的信息,更精确的指明了当前活动能够响应的Intent中还可能带有的category。只有<action>和<category>中的内容同时能够匹配上Intent中指定的action和category时,这个活动才能响应该Intent。

2.修改FirstActivity中按钮的点击事件,代码如下:

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				/*Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);*/

				//使用隐式的Intent
				Intent intent=new Intent("com.wj.test.activitytest.ACTION_START");
				startActivity(intent);
			}

		});

可以看到,我们使用了Intent的另一个构造函数,直接将action的字符串传了进去,表明我们想要启动能够响应com.wj.test.activitytest.ACTION_START这个action的活动。<category android:name="android.intent.category.DEFAULT"/>是一种默认的category,在调用startActivity方法的时候会自动将这个category添加到Intent中。

重写运行程序,将出现和显示的Intent一样的效果。

注意:每个Intent中只能指定一个action,但却能指定多个category。下面我们在添加一个category吧。

3.修改FirstActivity中按钮的点击事件,代码如下:

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				/*Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);*/

				//使用隐式的Intent
				Intent intent=new Intent("com.wj.test.activitytest.ACTION_START");
				intent.addCategory("com.wj.activitytest.MY_CATEGORY");
				startActivity(intent);
			}

		});

4.修改后你在运行一下程序,就会发现程序崩溃了,看错误信息,你会发现10-27 01:03:47.937: E/AndroidRuntime(2824): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.wj.test.activitytest.ACTION_START
cat=[com.wj.activitytest.MY_CATEGORY] },提示我们没有任何活动可以响应我们的Intent,这是因为我们添加了intent.addCategory("com.wj.activitytest.MY_CATEGORY");,而SecondActivity的<intent-filter>标签中并没有声明这个category,所以就出现了没有任何活动可以响应Intent的情况。我们对<intent-filter>添加category的声明。

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.wj.test.activitytest.ACTION_START"> </action>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="com.wj.activitytest.MY_CATEGORY"/>
            </intent-filter>
        </activity>

5.再次运行,就一切正常了

更多隐式Intent的用法

打开一个指定的页面的浏览器

1.修改FirstActivity中按钮点击事件的代码,主要代码如下

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				/*Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);*/

				//使用隐式的Intent
				/*Intent intent=new Intent("com.wj.test.activitytest.ACTION_START");
				intent.addCategory("com.wj.activitytest.MY_CATEGORY");
				startActivity(intent);*/

				//更多隐式的Intent的用法
				//打开浏览器
				/*
				 * 这里我们指定了Intent的action是Intent.ACTION_VIEW,这是一个android系统内置的动作,
				 * 其常量为android.intent.action.VIEW,然后通过Uri.parse方法,将一个网址字符串解析成一个
				 * Uri对象,在调用Intent的setData()方法将这个对象传递进去。
				 * */
				Intent intent=new Intent(Intent.ACTION_VIEW);
				intent.setData(Uri.parse("http://www.baidu.com"));
				startActivity(intent);

			}

		});

在上面我们指定了Intent的data数据,于此对应的,我们还可以在,<intent-filter>标签中在配置一个<data>标签,用与更精确地指定当前活动能够响应什么类型的数据。<data>标签中主要可以配置以下的内容:

android:scheme用于指定数据的协议部分,如上列中的http部分

android:host用于指定数据的主机名部分,如上列中的www.baidu.com

android:port用于指定数据的端口不,一般紧随在主机名之后

android:path用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容

android:mineType用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该Intent。

下面建立一个活动,让它也能响应打开网页的Intent。

新建一个布局文件名为third_layout.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 3" />

</LinearLayout>

然后新建一个活动ThirdActivity继承Activity,代码如下:

package com.wj.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class ThirdActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.third_layout);
	}

}

注册activity

 <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>

在ThirdActivity的<intent-filter>中配置了当前活动能够响应的action是Intent.ACTION_VIEW的常量,而category则使用默认的值,另外data标签中通过android:scheme="http"指定了数据协议必须是http协议,这样ThirdActivity应该就和浏览器一样,能够响应一个打开网页的Intent了。

运行程序程序点击button1结果如下:

选择AndroidTest继续运行结果如下:

下面使用Intent实现调用拨打电话的功能

修改button1的监听程序,代码如下:

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				/*Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);*/

				//使用隐式的Intent
				/*Intent intent=new Intent("com.wj.test.activitytest.ACTION_START");
				intent.addCategory("com.wj.activitytest.MY_CATEGORY");
				startActivity(intent);*/

				//更多隐式的Intent的用法
				//打开浏览器
				/*
				 * 这里我们指定了Intent的action是Intent.ACTION_VIEW,这是一个android系统内置的动作,
				 * 其常量为android.intent.action.VIEW,然后通过Uri.parse方法,将一个网址字符串解析成一个
				 * Uri对象,在调用Intent的setData()方法将这个对象传递进去。
				 * */
				/*Intent intent=new Intent(Intent.ACTION_VIEW);
				intent.setData(Uri.parse("http://www.baidu.com"));
				startActivity(intent);*/

				//实现拨打电话
				Intent intent=new Intent(Intent.ACTION_DIAL);
				intent.setData(Uri.parse("tel:10086"));
				startActivity(intent);

			}

		});

运行程序,结果如下:

下面我将讲解怎么使用Intent在活动中传递数据

向下一个活动传递数据

1.修改button1的监听按钮代码

//向下一个活动传递数据
				/*
				 * Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中
				 * ,启动了另一个活动后,只需把这些数据再从Intent中取出就可以了。
				 * */
				String data="Hello SecondActivity";
				Intent intent =new Intent(FirstActivity.this,SecondActivity.class);
				intent.putExtra("extra_data", data);
				startActivity(intent);

这里使用显示的Intent的方式来启动SecondActivity,并通过putExtra()方法传递了一个字符串,该方法接收2个参数,第一个参数是键,用于后面从Intent中取值,第二个参数才是真正传递的数据。

2.修改SecondActivity中将传递的数据取出,并打印出来,代码如下所示:

package com.wj.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.second_layout);
		Intent intent=getIntent();
		String data =intent.getStringExtra("extra_data");
		Log.d("SecondActivity", data);
	}

}
通过getIntent()方法获取到用于启动SecondeActivity的Intent,然后调用<span style="font-family: Arial, Helvetica, sans-serif;">getStringExtra()方法,传入相应的键值,就可以得到传递的数据了。</span>
<span style="font-family:Arial, Helvetica, sans-serif;">运行程序可以看到如下输出Hello SecondActivity</span>

返回数据给上一个活动:

1.修改button1监听器的代码:

button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
/*				Toast.makeText(FirstActivity.this, "you clicked button1",
					Toast.LENGTH_SHORT).show();*/
				/*
				 * Intent的使用分为显示的Intent和隐式的Intent,下面的是显示的Intent
				 * Intent有多个构造函数,我使用的是一个简单的的,第一个参数Context要求提供一个启动
				 * 活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数构建出Intent
				 * 的“意图”,然后使用startActivity(intent);启动目标活动。
				 * Intent是android程序中个组件之间进行交互的一种重要的方式,它不紧可以指明当前组想要执行
				 * 的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动,服务,以及发送广播等。
				 * */
				/*Intent intent=new Intent(FirstActivity.this,
						SecondActivity.class);
				startActivity(intent);*/

				//使用隐式的Intent
				/*Intent intent=new Intent("com.wj.test.activitytest.ACTION_START");
				intent.addCategory("com.wj.activitytest.MY_CATEGORY");
				startActivity(intent);*/

				//更多隐式的Intent的用法
				//打开浏览器
				/*
				 * 这里我们指定了Intent的action是Intent.ACTION_VIEW,这是一个android系统内置的动作,
				 * 其常量为android.intent.action.VIEW,然后通过Uri.parse方法,将一个网址字符串解析成一个
				 * Uri对象,在调用Intent的setData()方法将这个对象传递进去。
				 * */
				/*Intent intent=new Intent(Intent.ACTION_VIEW);
				intent.setData(Uri.parse("http://www.baidu.com"));
				startActivity(intent);*/

				//实现拨打电话
				/*Intent intent=new Intent(Intent.ACTION_DIAL);
				intent.setData(Uri.parse("tel:10086"));
				startActivity(intent);*/

				//向下一个活动传递数据
				/*
				 * Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中
				 * ,启动了另一个活动后,只需把这些数据再从Intent中取出就可以了。
				 * */
				/*String data="Hello SecondActivity";
				Intent intent =new Intent(FirstActivity.this,SecondActivity.class);
				intent.putExtra("extra_data", data);
				startActivity(intent);*/

				//返回数据给上一个活动
				Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
				/*
				 * startActivityForResult方法接收2个参数,一个参数是Intent,第二个参数是请求码
				 * ,用于在之后的的回调中判断数据的来源
				 * */
				startActivityForResult(intent, 1);

			}

		});

2.给button2进行监听

package com.wj.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.second_layout);
		/*Intent intent=getIntent();
		String data =intent.getStringExtra("extra_data");
		Log.d("SecondActivity", data);*/

		//获得按钮组件
		Button button2=(Button) findViewById(R.id.button_2);
		button2.setOnClickListener(new OnClickListener(){//进行监听

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent=new Intent();
				intent.putExtra("data_return", "Hello FirstActivity");
				//setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般使用
				//RESULT_OK or RESULT_CANCELED,第二个参数则是把带有数据的Intent传递回去,然后调用
				//finish方法来销毁当前活动
				setResult(RESULT_OK,intent);
				finish();//销毁当前活动
			}

		});

	}

}

3.重写FirstActivity的回调方法

//重写onActivityResult方法获取返回的结果数据
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		switch(requestCode){
		case 1:
			if(resultCode==RESULT_OK){
				String returnedData=data.getStringExtra("data_return");
				Log.d("FirstActivity", returnedData);
			}
			break;
		default:break;
		}

	}

运行程序点击button1,然后点击button2,观看log的输出你就会发现输出了

10-28 12:09:09.396: D/FirstActivity(3755): Hello FirstActivity

注意在一个活动中调用startActivityForResult方法去启动不同的活动,没一个活动返回的数据都会调用onActivityResult这个方法。

如果你不想点击button2的按钮进行返回,你可以点击back键进行返回只要重写SecondActivity的onBackPressed()方法就行了,代码如下:

@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		Intent intent=new Intent();
		intent.putExtra("data_return", "Hello FirstActivity");
		//setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般使用
		//RESULT_OK or RESULT_CANCELED,第二个参数则是把带有数据的Intent传递回去,然后调用
		//finish方法来销毁当前活动
		setResult(RESULT_OK,intent);
		finish();//销毁当前活动
	}

总结:通过上面的讲解,Intent的基本的使用就讲解完了,在数据传递的时候,Intent是意图,相当与信使,你可以把数据放到Bundle中,在把Bundle放到Intent中,也可以进行数据的传递,在使用的时候,希望能够举一反三,不会的方法可以多查看api和源码,Intent就讲解到这吧,下一篇将讲解活动的生命周期。

转载请注明:http://blog.csdn.net/j903829182/article/details/40502495

时间: 2024-08-24 07:22:32

android学习三(Intent)的相关文章

android学习五 Intent

1.Intent是组件间调用的桥梁. 2.Android系统定义了很多Intent    http://developer.android.com/guide/components/intents-common.html 3.Intent    Intent包括的内容可以有以下一个或多个 操作 数据 extra数据 组件名称 包含组件名称的Intent叫显示Intent,否则 叫隐式Intent.显示Intent在做目标活动匹配时会忽略掉除组件名称的其他部分内容. new Intent(Inte

Android学习之Intent传递数据

Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据. 一.向下一个Activity传递数据主要是利用Intent作为“信使”来调用, 原Activity需要创建一个intent,并用putExtra(键,值)方法向intent中放入需要传递的信息,然后启动. public void onClick(View view){ String msg =

Android学习笔记-Intent(一)

Intent对象在Android官方API这样描述:It is a passive data structure holding an abstract description of an operation to be performed. 它是一种数据结构,抽象描述一次将要被执行的操作,其作用是在程序运行过程中连接两个不同的组件. Intent机制的引入,是实现Android应用程序的组件间通信的一种消息机制,它允许你在应用程序的组件间传递 Intent 来执行动作和产生事件,组件可以是跨应

Android学习之Intent过滤器的使用

Intent过滤器 我们的app的功能可能对别的app也有用,那么我们的app应该做好响应其他APP的准备. 例如,一个社交app,它可以分享信息或者照片给好友,那么最好我们的app能够接收ACTION_SEND的intent,这样当用户在其他app触发分享功能的时候,我们的app也能够出现在待选对话框. 通过在manifest文件中的<activity>标签下添加<intent-filter>属性,能使其他的app能够启动我们的activity. 当app被安装到设备上时,系统可

android学习之intent学习笔记

1 以代码介绍一下激活意图的方法: //显示激活意图 //方法1 // Intent intent=new Intent(); // intent.setClassName("com.example.multiactivity", "com.example.multiactivity.SecondActivity"); // startActivity(intent); //方法2 // Intent intent=new Intent(this, SecondAc

Android学习三:线程操作

作为Android开发的组成部分,多线程的作用举足轻重,先来说说应用场景 1多线程使用场景 1.1正常使用中,经常有子线程来更新界面UI的需求,但是安卓不允许子线程更新UI 使用子线程处理UI,若线程需要较长的时间,势必造成UI没有反应,从而导致程序ANR(Application is not responding),使用户体验很差. 1.2多线程执行的需求 与其他编程开发一样,多线程可以增加程序的并发性,提高程序吞吐能力. 2多线程开发模式 2.1使用AsyncTask AsyncTask是A

Android学习记录 - Intent

1,Intent是什么? Intent是Activity之间跳转的媒介,通过这个媒介,一个Activity可以跳转到另一个Activity 2,为什么需要Intent(意义.作用等) 当应用程序具有多个Activity时,通常需要从一个Activity跳转到另一个Activity,而Intent的作用就是完成这个跳转,并且它还可以协助一个Activity传递数据给另一个Activity 一个Activity类似于一个网页,网页之间的跳转使用URL,而Activity之间的跳转使用Intent

android学习三---创建第一个程序

1.创建一个Helloworld程序 1.1 new-android application 点击file-new-android application出现如下界面 填上应用名,项目名,包名,选择所需最低的SDK版本,目标版本和编译版本,next next 选择一个Activity,默认是blank.然后Finish. 就创建好一个android项目了.不需要添加任何代码,就可以运行了. 2.创建虚拟机和在真机上运行 2.1 模拟器运行 打开工具栏上AVD的按钮 出现创建VD(虚拟机)的界面

android学习:intent和Bundle传值上的区别

https://blog.csdn.net/u014657752/article/details/47301569 结论: Bundle在存取数据是比较灵活的,而Intent在存取数据的种类很少且没有指定数据类型: 想对数据进行比较灵活的操作如批量操作的话就用bundle: Bundle是可以对对象进行操作的,而Intent不可以.Bundle相对于Intent比较偏下层,比Intent接口更多,更灵活,但Bundle仍需要借助Intent才能在Activity之间传递. 概括一下,Intent