首页 > 代码库 > (八)activity的生命周期

(八)activity的生命周期

8.1 activity的7个生命周期方法

onCreate()、onStart()、onResume()、onpause()、onstop()、ondestroy()、onRestart()方法。onRestart()方法是当一个已经创建的Activity重新位于前台时,会调用此方法,其他的六个生命周期函数调用时机如下所示:

8.2 activity的生命周期

8.3  生命周期函数的应用场景

ondestroy():程序被销毁的时候调用,比较适合数据的持久化操作,保存数据。

onStart():UI界面的更新或业务逻辑的判断

8.4 第一个例子程序  ActivityLifeCycle程序

8.4.1 activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"   android:orientation="vertical"    tools:context="com.example.activitylifecycle.MainActivity" >    <Button         android:onClick="click1"         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击进入第二个Activity"/>      <Button         android:onClick="click2"         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击进入对话框风格的Activity"/>   <!--  <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /> --></LinearLayout>

 

8.4.2 MainActivity.java程序

package com.example.activitylifecycle;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        System.out.println("onCreate()");    }    public void click1(View view){        Intent intent=new Intent(this,SecondActivity.class);        startActivity(intent);            }    public void click2(View view){        Intent intent=new Intent(this,ThirdActivity.class);        startActivity(intent);            }    @Override    protected void onStart() {        // TODO Auto-generated method stub        super.onStart();        System.out.println("onStart()");    }    @Override    protected void onRestart() {        // TODO Auto-generated method stub        super.onRestart();        System.out.println("onRestart()");    }    @Override    protected void onResume() {        // TODO Auto-generated method stub        super.onResume();        System.out.println("onResume()");    }    @Override    protected void onPause() {        // TODO Auto-generated method stub        super.onPause();        System.out.println("onPause()");    }    @Override    protected void onStop() {        // TODO Auto-generated method stub        super.onStop();        System.out.println("onStop()");    }    @Override    protected void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        System.out.println("onDestroy()");    }}

8.4.3 SecondActivity.java和 ThirdActivity.java里面的内容都是空的

8.4.4 在AndroidManifest.xml中添加

  <activity            android:name=".SecondActivity"            android:label="@string/SecondActivityapp_name" >        </activity>        <activity            android:theme="@android:style/Theme.Dialog"            android:name=".ThirdActivity"            android:label="@string/ThirdActivityapp_name" >        </activity>

 

 

8.5 第二个例子程序   网络连接的判断

8.5.1 MainActivity.java中的代码

 

package com.example.networktest;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.provider.Contacts;import android.text.AlteredCharSequence;import android.widget.Toast;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    protected void onStart() {        // TODO Auto-generated method stub        super.onStart();        ConnectivityManager cm = (ConnectivityManager) this                .getSystemService(CONNECTIVITY_SERVICE);        NetworkInfo netWorkInfo = cm.getActiveNetworkInfo();        if (netWorkInfo != null && netWorkInfo.isAvailable()) {            Toast.makeText(MainActivity.this, "网络可用", 1).show();        } else {            AlertDialog.Builder builder = new Builder(this);            builder.setTitle("网络不可用提示对话框");            builder.setMessage("当前系统网络不可用,请点击确定按钮设这");            builder.setPositiveButton("确定", new OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    // TODO Auto-generated method stub                    Toast.makeText(MainActivity.this, "网络不可用", 1).show();                    /*                     * Intent intent=new Intent();                     * intent.setClassName("com.android.settings",                     * "com.android.settings.WirelessSettings");                     * startActivity(intent);                     */                }            });            builder.create().show();        }    }}

 

 

 8.5.2 在AndroidManifest.xml中添加访问网络状态的权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

 

(八)activity的生命周期