一、 认识Activity

Activity是Android的四大组件之一,那么它是什么呢?如果简单的理解,可以把它当成应用的一个显示的屏幕。
Activity类处于android.app包中,继承体系如下:
java.lang.Object
android.content.Context
android.app.ApplicationContext
android.app.Activity

Activity是单独的,用于处理用户操作。开发人员可以通过 setContentView(View)接口把UI放到Activity创建的窗口上,大部分的 Activity子类都需要实现以下两个方法:
onCreate(Bundle)方法是初始化Activity的地方. 在这儿通常可以调用setContentView(int)设置在资源文件中定义的UI, 使用findViewById(int) 可以获得UI中定义的窗口.
onPause()方法是使用者准备离开Activity的地方,在这儿,任何的修改都应该被提交(通常用于ContentProvider保存数据).
程序定义的Activity必须在AndroidManifest.xm文件中进行配置,否则不能使用。

二、 Activity的生命周期

2.1 首先我们看看Activity的生命周期图


理解Activity的生命周期:

public class FirstActivity extends Activity{  private Button btn1;  private Button btn2;  @Override  public void onCreate(Bundle savedInstanceState)  {    super.onCreate(savedInstanceState);    System.out.println("----onCreate----");    setContentView(R.layout.main);    this.btn1 = (Button) findViewById(R.id.btn1);    this.btn1.setOnClickListener(new OnClickListenerImpl());    this.btn2 = (Button) findViewById(R.id.btn2);    this.btn2.setOnClickListener(new OnClickListenerImpl());  }  @Override  protected void onStart()  {    super.onStart();    System.out.println("----onStart----");  }  @Override  protected void onRestart()  {    super.onRestart();    System.out.println("----onRestart----");  }  @Override  protected void onPause()  {    // TODO Auto-generated method stub    super.onPause();    System.out.println("----onPause----");  }  @Override  protected void onResume()  {    super.onResume();    System.out.println("----onResume----");  }  @Override  protected void onStop()  {    super.onStop();    System.out.println("----onStop----");  }  @Override  protected void onDestroy()  {    super.onDestroy();    System.out.println("----onDestroy----");  }  private class OnClickListenerImpl implements OnClickListener  {    @Override    public void onClick(View v)    {      int id = v.getId();      switch (id)      {        case R.id.btn1:          Intent i1 = new Intent(FirstActivity.this, SecondActivity.class);          FirstActivity.this.startActivity(i1);          break;        case R.id.btn2:          Intent i2 = new Intent(FirstActivity.this, ThirdActivity.class);          FirstActivity.this.startActivity(i2);          break;        default:          break;      }    }  }}




接下来,我们测试,直接启动应用;


这时,我们点击返回键:



我们重启启动界面,点击第一个按钮,进入第二个界面,然后再点击返回按钮,可看到日志输出:



我们修改ThirdActivity的样式,使其变成一个弹出框式的Activity,只需要再配置该Activity时指定:

<activity      android:name=".ThirdActivity"      android:theme="@android:style/Theme.Dialog" ><span style="font-family: Arial, Helvetica, sans-serif;"></activity></span>

接着,我们重启启动该应用,并点击btn2,可看到日志输出:


我们可以看出,以为ThirdActivity是对话框风格的,所以启动后,FirstActivity并非不可见,只是失去了焦点,所以其并没有进入onStop()方法中,所以在返回到该Activity时,是直接进入了onResume方法,而并没有重启启动(onResult()和onStart()).


三、 Activity生命周期的使用场景

3.1 onDestory的应用:

比如我们开发一个应用,需要用户输入数据,而如果用户一不小心把应用关闭了,那数据就丢失了。 所以,友好的应用应该是我们需要在onDestory()方法中,将用户输入的信息保存下来(文件中),然后在onCreate方法里,再把它取出来。


3.2 onStart的应用:测试网络的环境:


我们希望,当用户进入到界面上时,检查网络,如果网络不可用,则跳转到网络设置界面,而且,必须是用户设置网络成功后,才可行,不然就一直让用户设置网络。 此时,我们可以使用onStart方法,onStart方法是在Activity可见时调用的。

    @Override    protected void onStart()    {        super.onStart();        ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo info = cm.getActiveNetworkInfo();        if (info != null && info.isConnected())        {            Toast.makeText(this, "网络可用", Toast.LENGTH_SHORT).show();        }        else        {            Toast.makeText(this, "网络不可用", Toast.LENGTH_SHORT).show();            Intent intent = new Intent();            intent.setClassName("com.android.setting", "com.android.setting.WirelessSettings");            startActivity(intent);        }        System.out.println("----onStart----");    }

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. android postDelayed 方法的简单使用
  3. 实现退出时关闭所有Activity的方法
  4. Android7.1修改系统默认多媒体音量大小
  5. QT 环境的 Android(安卓)配置和编译
  6. Android(安卓)WebView 中 JS 与Java之间通信
  7. Android(安卓)ColorStateList使用方法
  8. Android6.0系统悬浮窗权限的问题解决方法
  9. android 2.3 wifi (一)

随机推荐

  1. Android(安卓)SurfaceView Double Buffer
  2. Android中读取电话本Contacts联系人的所
  3. 【Android】_SQLiteDemo_学生管理系统
  4. Android之——性能与内存优化
  5. Android的Message Queue
  6. Android增量编译3~5秒的背后
  7. android Canvas用法
  8. Android的webview研究
  9. Android(安卓)Animation学习笔记
  10. Android(安卓)Fragment重叠问题