【Android笔记】Android中Activity

本文详细介绍了 Android 中 Activity 的生命周期,包括各个回调函数的作用及其调用时机。此外还讲解了 Activity 间的数据传递方法及不同启动方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. android的activity执行的入口为oncreate()

2.activity的生命周期:


3. activity生命周期中回调函数(callbacks)介绍

oncreate():activity第一次创建时调用

onstart():activity对用户可见时调用

onresume():用户与应用进行交互时调用

onPause():当前一个activity被恢复,当前活动别暂停时调用,暂停后的activity无法接收用于的任何输入,并且无法执行任何代码

onStop():当一个Activity不在可见时调用该回调函数

onDestroy():在系统销毁Activity之前调用

onRestart():当一个activity被stop之后,重新开始时执行

4. 启动另外一个Activity的几种方式:

第一种 最为常见的一种

startActivity(new Intent(当前Act.this,要启动的Act.class));

第二种 通过Intent的ComponentName

ComponentName cn = new ComponentName("当前Act的全限定类名","启动Act的全限定类名") ;
Intent intent = new Intent() ;
intent.setComponent(cn) ;
startActivity(intent) ;

目前对这种方法的使用了解不多,待以后逐步学习吧

第三种 初始化Intent时指定包名:

Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("当前Act的全限定类名","启动Act的全限定类名");
startActivity(intent);

第四种 通过Intent-filter的Action,Category或data来实现 这个是通过Intent的 intent-filter**来实现的


第五种 直接通过包名启动apk的

Intent intent = getPackageManager().getLaunchIntentForPackage
("apk第一个启动的Activity的全限定类名") ;
if(intent != null) startActivity(intent) ;

5. Activity之间传送数据


另外接受整型数据时要有默认值,直接getIntExtra("key")是不行的,如下图:


6. 多个Activity之间的交互

比如你在MainActivity里这样写(第16、17、22行):

public class MainActivity extends AppCompatActivity {

    // Add a different request code for every activity you are starting from here
    private static final int SECOND_ACTIVITY_REQUEST_CODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // "Go to Second Activity" button click
    public void onButtonClick(View view) {

        // Start the SecondActivity
        Intent intent = new Intent(this, SecondActivity.class);
        startActivityForResult(intent, SECOND_ACTIVITY_REQUEST_CODE);
    }

    // This method is called when the second activity finishes
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // check that it is the SecondActivity with an OK result
        if (requestCode == SECOND_ACTIVITY_REQUEST_CODE) {
            if (resultCode == RESULT_OK) { // Activity.RESULT_OK

                // get String data from Intent
                String returnString = data.getStringExtra("keyName");

                // set text view with string
                TextView textView = (TextView) findViewById(R.id.textView);
                textView.setText(returnString);
            }
        }
    }
}

在SecondActivity中这样写(17-20行):

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    // "Send text back" button click
    public void onButtonClick(View view) {

        // get the text from the EditText
        EditText editText = (EditText) findViewById(R.id.editText);
        String stringToPassBack = editText.getText().toString();

        // put the String to pass back into an Intent and close this activity
        Intent intent = new Intent();
        intent.putExtra("keyName", stringToPassBack);//如果没有需要返回的数据,这一行代码可以没有
        setResult(RESULT_OK, intent);
        finish();
    }
}

总结以下,如下图所示:


这样就完成了多个Activity之间的交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值