Android提高之Activity+Intent用法示例_Android

一般来说。熟悉Android程序设计的人都知道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的Java源码如下:

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的Java源码如下:

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();
  }
 }
  }
}

希望本例所述的Acitivity用法能对大家的Android程序开发起到一定的帮助作用。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, activity
用法
intent跳转activity、activity onnewintent、intent 启动activity、activity intent 传值、activity intent,以便于您获取更多的相关知识。

时间: 2016-08-08

Android提高之Activity+Intent用法示例_Android的相关文章

Android提高之Activity+Intent用法示例

一般来说.熟悉Android程序设计的人都知道Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动.本文所要介绍的是Activity的生命周期以及针对Activity的Intent使用. 之前的例子一直都是使用Activity,在一个Layout XML与一个Activity捆绑的情况下可以视为一个Form,多个Layout XML与一个Activity捆绑的话那就是个Application本身了.Intent可以分为显

Android使用Sqlite存储数据用法示例_Android

本文实例讲述了Android使用Sqlite存储数据的方法.分享给大家供大家参考,具体如下: 一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XML使用方便,那么这些都是简单的数据存储功能,在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Ac

Android DatePicker和DatePickerDialog基本用法示例_Android

本文实例讲述了Android DatePicker和DatePickerDialog基本用法.分享给大家供大家参考,具体如下: DatePicker用来设置手机的时间和闹钟 1.添加一个按钮控件在配置文件中,然后给该按钮添加事件,使其能够打开DatePicker //下面采用匿名内部类的方式 btn.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //通过下面的方法可

Android实现的数字格式化用法示例_Android

本文实例讲述了Android实现的数字格式化用法.分享给大家供大家参考,具体如下: package formatnumber; import java.text.DecimalFormat; public class FormatNumber { public static void main(String[] args) { DecimalFormat df = new DecimalFormat(); double data = 1234.56789; System.out.println(

Android AutoCompleteTextView控件基本用法示例_Android

本文实例讲述了Android AutoCompleteTextView控件基本用法.分享给大家供大家参考,具体如下: 当输入部分内容之后会有相关的建议,类似于百度提示信息 1.在布局文件中声明一个AutoCompleteTextView <AutoCompleteTextView android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_he

Android TextView显示Html类解析的网页和图片及自定义标签用法示例_Android

本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签.分享给大家供大家参考,具体如下: Android系统显示HTML网页的最佳控件为WebView,有时候为了满足特定需求,需要在TextView中显示HTML网页.图片及解析自定义标签. 1.TextView显示Html类解析的网页 CharSequence richText = Html.fromHtml("<strong>萝卜白菜的博客</strong>--<a href='

Android组件之间交互核心Intent用法分析_Android

本文实例讲述了Android组件之间交互核心Intent用法.分享给大家供大家参考,具体如下: 从一个Activity启动到另一个Activity可以使用startActivity()方法或者是startActivityForResult()方法 第一种:直接启动一个Activity Intent intent = new Intent(Main.this, SecondActivity.class); startActivity(intent); 第二种:启动另一个Activity并返回结果

Android开发中Intent用法总结_Android

本文实例讲述了Android开发中Intent用法.分享给大家供大家参考,具体如下: Android手机软件开发中,Intent作为手机软件开发时很重要的对象需要引起我们的重视,实际上,intent也是体现Android开发具有其独特性的一个标志性的对象. 当一个Activity要启动另外一个Activity的时候,也许一个以前较为熟悉的模式是:调用一个new函数,直接创建具有窗口特征类的对象,又或者直接调用一个启动函数来启动.这种方式简洁.明了,但是却违背了Android开发的理念.Andro

Android开发中CheckBox的简单用法示例_Android

本文实例讲述了Android开发中CheckBox的简单用法.分享给大家供大家参考,具体如下: CheckBox是一种在界面开发中比较常见的控件,Android中UI开发也有CheckBox,简单的说下它的使用,每个CheckBox都要设置监听,设置的监听为CompouButton.OnCheckedChangedListener(). package com.zhuguangwei; import android.app.Activity; import android.os.Bundle;