Activity的生命周期
Activity的生命周期
YYP愿有岁月可回首 发表于2年前
Activity的生命周期
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: Activity、Service、ContentProvider、BroadcastReceiver 合称为Android应用程序的四大核心组件,号称“四大金刚“。由于Android并不提供Linux终端界面应用,Android应用的用户界面只能由Activity和UI控件(View)提供,Activity作为UI控件的承载体(或容器),其生命周期直接影响一个Android应用的运行及状态。本文简述Activity的生命周期及其部分方法。

记录学习Android的第一周(Activity的生命周期是活的,只有自己摸索才能掌握)


   每一个Activity都有生命周期,不同周期阶段运行不同函数,这些状态对于一个Android应用状态至关重要。

比如说:我们做了一个基于Android手机社交软件,在一个Activity发送消息界面中,我们准备给朋友发送消息,刚撰写完成,正欲发送消息的时候,突然来了一个电话呼入,系统界面完全跳到电话应用Activity界面,等通话结束返回到我们的Activity发送消息界面,我们希望我们原先写的消息还存在,我们可以继续编写或发送消息。这种情况下,我们必须要深入了解Activity的生命周期,在相应的函数中保存、恢复我们的数据。

Activity在生命周期不同阶段对应的部分运行函数的相应代码如下:

package com.example.jsjzx.myapplication;

import android.os.PersistableBundle;
import android.provider.Settings;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    StringBuilder sb=new StringBuilder();//为什么不用StringBuffer?考虑到线程安全
    int i=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // Toast.makeText(this,"hello world",Toast.LENGTH_LONG).show();
       // System.out.println("hello world");
        sb.append(i++);
        sb.append(".OnCreate-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        sb.append(i++);
        sb.append(".OnStop-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        sb.append(i++);
        sb.append(".OnStart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        sb.append(i++);
        sb.append(".onResume-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        sb.append(i++);
        sb.append(".onPause-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        sb.append(i++);
        sb.append(".onDestroy-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        sb.append(i++);
        sb.append(".onRestart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

Activity常见运行状态说明:

(1).   当打开一个Android应用程序的时候,会先后依次执行该程序主Activity的onCreate()->onStart()->onResume()三个方法。

(2).   当退出程序(或者点击BACK键),会先后依次执行该Activity的

onPause()->onStop()->onDestory()三个方法。

(3).   打开应用程序运行时,突然有电话呼入,Activity会先后依次执行了

onPause()->onStop()这两个方法,这时候应用程序并没有销毁。

(4).   而当再次启动该Android应用程序时,则会先后依次执行了

onRestart()->onStart()->onResume()三个方法。

(5).   当按HOME键,然后再次进入Activity应用时,该应用的状态应该是和按HOME键之前的状态是一样的。所以,大多数情况下可以在onPause()里面保存一些数据和状态。而在onResume()里面来恢复数据。



共有 人打赏支持
粉丝 0
博文 2
码字总数 990
×
YYP愿有岁月可回首
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: