Android有三个基础组件ActivityServiceBroadcastReceiver,他们都是依赖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。

       先贴出本文运行截图:

 Android提高21篇之四:Activity与Intent

Android提高21篇之四:Activity与Intent

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

Android提高21篇之四:Activity与Intent 

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

       main1.xml的源码:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <Button android:layout_width="wrap_content"  
  6.         android:layout_height="wrap_content" android:id="@+id/main1.Button01"  
  7.         android:text="跳转到Activity2"></Button>  
  8.     <EditText android:text="@+id/EditText01" android:id="@+id/EditText01"  
  9.         android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>  
  10.     <Button android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content" android:id="@+id/main1.Button02"  
  12.         android:text="跳转到外部Activity"></Button>  
  13. </LinearLayout>  

       main2.xml的源码:

XML/HTML代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <LinearLayout android:id="@+id/LinearLayout01"  
  3.     android:layout_width="fill_parent" android:layout_height="fill_parent"  
  4.     xmlns:android="http://schemas.android.com/apk/res/android">  
  5.     <Button android:layout_width="wrap_content"  
  6.         android:layout_height="wrap_content" android:id="@+id/main2.Button01"  
  7.         android:text="返回Activity1"></Button>  
  8. </LinearLayout>  

       Activity1的源码:

Java代码
  1. package com.testActivityIntent;   
  2. import android.app.Activity;   
  3. import android.content.Intent;   
  4. import android.content.SharedPreferences;   
  5. import android.net.Uri;   
  6. import android.os.Bundle;   
  7. import android.util.Log;   
  8. import android.view.View;   
  9. import android.widget.Button;   
  10. import android.widget.EditText;   
  11. public class testActivityIntent extends Activity {   
  12.     /** Called when the activity is first created. */  
  13.     Button btnToInternalActivity;   
  14.     Button btnToExternalActivity;   
  15.     EditText tbBundle;   
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {   
  18.         super.onCreate(savedInstanceState);   
  19.         Log.e("Activity1""onCreate");//显示当前状态,onCreate与onDestroy对应   
  20.         setContentView(R.layout.main1);   
  21.            
  22.         btnToInternalActivity=(Button)this.findViewById(R.id.main1_Button01);   
  23.         btnToExternalActivity=(Button)this.findViewById(R.id.main1_Button02);   
  24.         btnToInternalActivity.setOnClickListener(new ClickEvent());   
  25.         btnToExternalActivity.setOnClickListener(new ClickEvent());   
  26.         tbBundle=(EditText)this.findViewById(R.id.EditText01);           
  27.     }   
  28.     public void onDestroy()   
  29.     {   
  30.         super.onDestroy();   
  31.         Log.e("Activity1""onDestroy");//显示当前状态,onCreate与onDestroy对应   
  32.     }   
  33.     @Override  
  34.     public void onStart()   
  35.     {   
  36.         super.onStart();   
  37.         Log.e("Activity1""onStart");//显示当前状态,onStart与onStop对应    
  38.     }   
  39.     @Override  
  40.     public void onStop()   
  41.     {   
  42.         super.onStop();   
  43.         Log.e("Activity1""onStop");//显示当前状态,onStart与onStop对应     
  44.     }   
  45.     @Override  
  46.     public void onRestart()   
  47.     {   
  48.         super.onRestart();   
  49.         Log.e("Activity1""onRestart");   
  50.     }   
  51.     @Override  
  52.     public void onResume()   
  53.     {   
  54.         super.onResume();   
  55.         Log.e("Activity1""onResume");//显示当前状态,onPause与onResume对应     
  56.         SharedPreferences prefs = getPreferences(0); //SharedPreferences 用于存储数据   
  57.         String restoredText = prefs.getString("editText01"null);   
  58.         if (restoredText != null) {   
  59.             this.tbBundle.setText(restoredText);   
  60.         }   
  61.     }   
  62.     @Override  
  63.     public void onPause()   
  64.     {   
  65.         super.onResume();   
  66.         Log.e("Activity1""onPause");//显示当前状态,onPause与onResume对应      
  67.         //保存文本框的内容,使得重回本Acitivity的时候可以恢复   
  68.         SharedPreferences.Editor editor = getPreferences(0).edit();//SharedPreferences 用于存储数据   
  69.         editor.putString("editText01"this.tbBundle.getText().toString());   
  70.         editor.commit();   
  71.     }   
  72.        
  73.     class ClickEvent implements View.OnClickListener{   
  74.         @Override  
  75.         public void onClick(View v) {   
  76.             if(v==btnToInternalActivity)   
  77.             {   
  78.                 Intent intent = new Intent();   
  79.                 intent.setClass(testActivityIntent.this,Activity2.class);   
  80.                    
  81.                 //new一个Bundle对象,并将要传递的数据传入   
  82.                 Bundle bundle = new Bundle();   
  83.                 bundle.putString("Text",tbBundle.getText().toString());   
  84.                  
  85.                 //将Bundle对象assign给Intent   
  86.                 intent.putExtras(bundle);   
  87.                  
  88.                 //调用Activity2   
  89.                 startActivity(intent);   
  90.                    
  91.                 testActivityIntent.this.finish();//会触发onDestroy();   
  92.             }   
  93.             else if(v==btnToExternalActivity)   
  94.             {   
  95.                 //有些外部调用需要开启权限   
  96.                 Uri uri = Uri.parse("http://google.com");      
  97.                 Intent it = new Intent(Intent.ACTION_VIEW, uri);      
  98.                 startActivity(it);    
  99.             }   
  100.                
  101.         }   
  102.            
  103.     }   
  104.        
  105. }  

       Activity2的源码:

Java代码
  1. package com.testActivityIntent;   
  2. import android.app.Activity;   
  3. import android.content.Intent;   
  4. import android.os.Bundle;   
  5. import android.util.Log;   
  6. import android.view.View;   
  7. import android.widget.Button;   
  8. public class Activity2  extends Activity {   
  9.     Button btnBackMain1;   
  10.     public void onCreate(Bundle savedInstanceState)   
  11.       {   
  12.         super.onCreate(savedInstanceState);   
  13.         Log.e("Activity2""onCreate");//显示当前状态,onCreate与onDestroy对应   
  14.            
  15.         //加载activity2.xml   
  16.         setContentView(R.layout.main2);   
  17.            
  18.         //得Intent中的Bundle对象   
  19.         Bundle bunde = this.getIntent().getExtras();   
  20.         //取得Bundle对象中的数据    
  21.         Log.i("In_Text", bunde.getString("Text"));   
  22.         btnBackMain1=(Button)this.findViewById(R.id.main2_Button01);   
  23.         btnBackMain1.setOnClickListener(new ClickEvent());   
  24.       }   
  25.        
  26.     public void onDestroy()   
  27.     {   
  28.         super.onDestroy();   
  29.         Log.e("Activity2""onDestroy");//显示当前状态,onCreate与onDestroy对应   
  30.     }   
  31.     @Override  
  32.     public void onStart()   
  33.     {   
  34.         super.onStart();   
  35.         Log.e("Activity2""onStart");//显示当前状态,onStart与onStop对应    
  36.     }   
  37.     @Override  
  38.     public void onStop()   
  39.     {   
  40.         super.onStop();   
  41.         Log.e("Activity2""onStop");//显示当前状态,onStart与onStop对应     
  42.     }   
  43.     @Override  
  44.     public void onRestart()   
  45.     {   
  46.         super.onRestart();   
  47.         Log.e("Activity2""onRestart");       
  48.     }   
  49.     @Override  
  50.     public void onResume()   
  51.     {   
  52.         super.onResume();   
  53.         Log.e("Activity2""onResume");//显示当前状态,onPause与onResume对应         
  54.     }   
  55.     @Override  
  56.     public void onPause()   
  57.     {   
  58.         super.onResume();   
  59.         Log.e("Activity2""onPause");//显示当前状态,onPause与onResume对应      
  60.     }   
  61.        
  62.     class ClickEvent implements View.OnClickListener{   
  63.         @Override  
  64.         public void onClick(View v) {   
  65.             if(v==btnBackMain1)   
  66.             {   
  67.                    
  68.                 Intent intent = new Intent();   
  69.                 intent.setClass(Activity2.this,testActivityIntent.class);   
  70.                    
  71.                 //调用Activity1   
  72.                 startActivity(intent);   
  73.                    
  74.                 Activity2.this.finish();//会触发onDestroy();   
  75.             }   
  76.                
  77.         }   
  78.            
  79.     }   
  80. }  
本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/course/428.html
2013年8月11日
发布:鸡啄米 分类:Android开发教程 浏览: 评论:0