`

Android提高第四篇之Activity+Intent[转]

 
阅读更多

        Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动。本文介绍的是Activity的生命周期以及针对Activity的Intent使用。

        之前的例子一直都是使用Activity,在一个Layout XML与一个Activity捆绑的情况下可以视为一个Form,多个Layout XML与一个Activity捆绑的话那就是个Application本身了。Intent可以分为显式Intent和隐式Intent:显式Intent用于启动明确的目标组件(前面所说的三大组件),同一个Application内的多个Activity调用也是显式Intent;隐式Intent就是调用没有明确的目标组件,可以是系统也可以是第三方程序。隐式Intent一般用于调用系统组件功能,相关例程都是网络上很容易找到的(调用某些系统组件的时候要申请权限)。

        Acitivity的运行状况分为:onCreate、onDestroy、onStart、onStop、onRestart、onResume、onPause,onCreate对应onDestroy,onStart对应onStop,onResume对应onPause。

先贴出本文运行截图:

这个是从Acitivity1转到Activity2的时候,Acitivity1的状态变化,使用了finish()会触发onDestroy()。

这个是从Activity2转到Activity1的时候,Acitivity2的状态变化。从两次Activity的启动可以看出,流程是onCreate()->onStart()->onResume()三个方法,销毁是onPause()->onStop()->onDestroy()。另外,要往工程添加第二个Activity,需要到AndroidManifest.xml->Application那里添加Activity2。

main1.xml的源码:

 

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <Button android:layout_width="wrap_content"  
        android:layout_height="wrap_content" android:id="@+id/main1.Button01"  
        android:text="跳转到Activity2"></Button>  
    <EditText android:text="@+id/EditText01" android:id="@+id/EditText01"  
        android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>  
    <Button android:layout_width="wrap_content"  
        android:layout_height="wrap_content" android:id="@+id/main1.Button02"  
        android:text="跳转到外部Activity"></Button>  
</LinearLayout>

 

 

main2.xml的源码:

 

<?xml version="1.0" encoding="UTF-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"  
    android:layout_width="fill_parent" android:layout_height="fill_parent"  
    xmlns:android="http://schemas.android.com/apk/res/android">  
    <Button android:layout_width="wrap_content"  
        android:layout_height="wrap_content" android:id="@+id/main2.Button01"  
        android:text="返回Activity1"></Button>  
</LinearLayout>

 

Activity1的源码:

 

package com.testActivityIntent;  
import android.app.Activity;  
import android.content.Intent;  
import android.content.SharedPreferences;  
import android.net.Uri;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.widget.Button;  
import android.widget.EditText;  
public class testActivityIntent extends Activity {  
    /** Called when the activity is first created. */  
    Button btnToInternalActivity;  
    Button btnToExternalActivity;  
    EditText tbBundle;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        Log.e("Activity1", "onCreate");//显示当前状态,onCreate与onDestroy对应  
        setContentView(R.layout.main1);  
          
        btnToInternalActivity=(Button)this.findViewById(R.id.main1_Button01);  
        btnToExternalActivity=(Button)this.findViewById(R.id.main1_Button02);  
        btnToInternalActivity.setOnClickListener(new ClickEvent());  
        btnToExternalActivity.setOnClickListener(new ClickEvent());  
        tbBundle=(EditText)this.findViewById(R.id.EditText01);          
    }  
    public void onDestroy()  
    {  
        super.onDestroy();  
        Log.e("Activity1", "onDestroy");//显示当前状态,onCreate与onDestroy对应  
    }  
    @Override  
    public void onStart()  
    {  
        super.onStart();  
        Log.e("Activity1", "onStart");//显示当前状态,onStart与onStop对应   
    }  
    @Override  
    public void onStop()  
    {  
        super.onStop();  
        Log.e("Activity1", "onStop");//显示当前状态,onStart与onStop对应    
    }  
    @Override  
    public void onRestart()  
    {  
        super.onRestart();  
        Log.e("Activity1", "onRestart");  
    }  
    @Override  
    public void onResume()  
    {  
        super.onResume();  
        Log.e("Activity1", "onResume");//显示当前状态,onPause与onResume对应    
        SharedPreferences prefs = getPreferences(0); //SharedPreferences 用于存储数据  
        String restoredText = prefs.getString("editText01", null);  
        if (restoredText != null) {  
            this.tbBundle.setText(restoredText);  
        }  
    }  
    @Override  
    public void onPause()  
    {  
        super.onResume();  
        Log.e("Activity1", "onPause");//显示当前状态,onPause与onResume对应     
        //保存文本框的内容,使得重回本Acitivity的时候可以恢复  
        SharedPreferences.Editor editor = getPreferences(0).edit();//SharedPreferences 用于存储数据  
        editor.putString("editText01", this.tbBundle.getText().toString());  
        editor.commit();  
    }  
      
    class ClickEvent implements View.OnClickListener{  
        @Override  
        public void onClick(View v) {  
            if(v==btnToInternalActivity)  
            {  
                Intent intent = new Intent();  
                intent.setClass(testActivityIntent.this,Activity2.class);  
                  
                //new一个Bundle对象,并将要传递的数据传入  
                Bundle bundle = new Bundle();  
                bundle.putString("Text",tbBundle.getText().toString());  
                
                //将Bundle对象assign给Intent  
                intent.putExtras(bundle);  
                
                //调用Activity2  
                startActivity(intent);  
                  
                testActivityIntent.this.finish();//会触发onDestroy();  
            }  
            else if(v==btnToExternalActivity)  
            {  
                //有些外部调用需要开启权限  
                Uri uri = Uri.parse("http://google.com");     
                Intent it = new Intent(Intent.ACTION_VIEW, uri);     
                startActivity(it);   
            }  
              
        }  
          
    }  
      
}

 

Activity2的源码:

 

package com.testActivityIntent;  
import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.widget.Button;  
public class Activity2  extends Activity {  
    Button btnBackMain1;  
    public void onCreate(Bundle savedInstanceState)  
      {  
        super.onCreate(savedInstanceState);  
        Log.e("Activity2", "onCreate");//显示当前状态,onCreate与onDestroy对应  
          
        //加载activity2.xml  
        setContentView(R.layout.main2);  
          
        //得Intent中的Bundle对象  
        Bundle bunde = this.getIntent().getExtras();  
        //取得Bundle对象中的数据   
        Log.i("In_Text", bunde.getString("Text"));  
        btnBackMain1=(Button)this.findViewById(R.id.main2_Button01);  
        btnBackMain1.setOnClickListener(new ClickEvent());  
      }  
      
    public void onDestroy()  
    {  
        super.onDestroy();  
        Log.e("Activity2", "onDestroy");//显示当前状态,onCreate与onDestroy对应  
    }  
    @Override  
    public void onStart()  
    {  
        super.onStart();  
        Log.e("Activity2", "onStart");//显示当前状态,onStart与onStop对应   
    }  
    @Override  
    public void onStop()  
    {  
        super.onStop();  
        Log.e("Activity2", "onStop");//显示当前状态,onStart与onStop对应    
    }  
    @Override  
    public void onRestart()  
    {  
        super.onRestart();  
        Log.e("Activity2", "onRestart");      
    }  
    @Override  
    public void onResume()  
    {  
        super.onResume();  
        Log.e("Activity2", "onResume");//显示当前状态,onPause与onResume对应        
    }  
    @Override  
    public void onPause()  
    {  
        super.onResume();  
        Log.e("Activity2", "onPause");//显示当前状态,onPause与onResume对应     
    }  
      
    class ClickEvent implements View.OnClickListener{  
        @Override  
        public void onClick(View v) {  
            if(v==btnBackMain1)  
            {  
                  
                Intent intent = new Intent();  
                intent.setClass(Activity2.this,testActivityIntent.class);  
                  
                //调用Activity1  
                startActivity(intent);  
                  
                Activity2.this.finish();//会触发onDestroy();  
            }  
              
        }  
          
    }  
}

 

本文来自http://blog.csdn.net/hellogv/article/details/5992198

分享到:
评论

相关推荐

    Android提高第四篇之Activity+Intent.docx

    Android提高第四篇之Activity+Intent.docx

    android应用开发详解 郭宏志编著 pdf格式

    第四章 android用户界面 第五章 android基本程序单元Activity 第六章 android组件之间的信使Intent 第七章 android Service组件 第八章 android广播事件处理Broadcast Receiver 第九章 android中的数据存取 第十章 ...

    谈谈Android里的Context的使用

    第4步:修改ApplicationDemoActivity.java,代码如下: package com.tutor.application; import android.app.Activity; import android.os.Bundle; public class ApplicationDemoActivity extends Activity {...

    Android编程四大组件之Activity用法实例分析

    本文实例讲述了Android编程四大组件之Activity用法。分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity、生命周期、内存管理、启动模式。 创建Activity 一.定义Activity 1. 定义Activity 定义类继承...

    Android应用开发详解

    第4章 Android用户界面 Android 用户界面,讲述了Android中的事件处理机制、布局管理和常用组件的使用。 第5章 Android基本程序单元Activity Android 基本程序单元Activity,讲述了Android中重要组件Activity的...

    《Android开发案例驱动教程》

    第4章 Android UI基础 58 第5章 UI基础控件 79 第6章 UI高级控件 105 第7章 UI布局 151 第8章 多线程 189 第9章 Activity和Intent 219 第10章 Android数据存储 248 第11章 Content Provider 302 第12章 多媒体开发 ...

    《Android开发案例驱动教程》源码

    第4章 Android UI基础 58 第5章 UI基础控件 79 第6章 UI高级控件 105 第7章 UI布局 151 第8章 多线程 189 第9章 Activity和Intent 219 第10章 Android数据存储 248 第11章 Content Provider 302 第12章 多媒体开发 ...

    Android期末复习选择题100道

    Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中...

    《Android应用开发详解》源码_文档讲解

    《Android应用开发详解源码》目录第1章 Android概述 第2章 Android开发基础 第3章 Android中的资源访问 第4章 Android用户界面 第5章 Android基本程序单元Activity 第6章 Android组件之间的信使Intent 第7章 Android...

    Android 调用第三方导航(百度、高德、腾讯)以及坐标转换

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(intent); //启动调用 } catch (URISyntaxException e) { Log.e("intent", e.getMessage()); } } else {//未安装 //market为...

    Android中pendingIntent与Intent的深入分析

    Android中pendingIntent的深入分析 pendingIntent字面意义:等待的,未决定的Intent。 要得到一个pendingIntent对象,使用方法类的静态方法...参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到

    疯狂Android讲义源代码2

    第4章 深入理解Activity 第5章 使用Intent和IntentFilter进行通信 第6章 Android应用的资源 第7章 图形与图像处理 第8章 Android的数据存储和IO 第9章 使用ContentProvider实现数据共享 第10章 Service与Broadcast ...

    Android开发课程实验报告③ intent的使用

    初学移动应用公开发中的Android开发,实验四的主要内容为intent的使用,通过这一次实验,掌握基本的intent使用方法。 具体实验分析 实验第一步:阅读官方文档:intent 实验解析:本次实验共分为两个部分。第一个部分...

    Android应用开发详解pdf.pdf

     第4章 Android用户界面Android 用户界面,讲述了Android中的事件处理机制、布局管理和常用组件的使用。  第5章 Android基本程序单元ActivityAndroid 基本程序单元Activity,讲述了Android中重要组件Activity的...

    android一步一步最基础学习__新手

    第四讲:Activity入门指南 Activity 第五讲:用户界面 View(一) FrameLayout, LinearLayout 第六讲:用户界面 View(二) AbsoluteLayout,RelativeLayout 第七讲:用户界面 View(三) TableLayout 第八讲:...

    android开发基础

    2.Android项目的建立 3.Android用户界面UI元素之Layout 4.Android用户界面UI元素之Widget(1) 5.Android用户界面UI元素之Widget(2) 6.Android用户界面UI元素...11.Android用户界面UI元素之Intent 第六讲Activity生命周期

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

Global site tag (gtag.js) - Google Analytics