2020/2/12学习总结

今天学习了关于Activity的基础内容

1.Activity是什么

Android中有四大组件(Activity活动,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器),Activity是我们用的最多也是最基本的组件,因为应用的所有操作都与用户相关,Activity提供窗口来和用户进行交互。

2.创建Activity

2.1要创建一个Activity首先要继承Activity类,然后必须要实现onCreat()方法。实现内初始化Activity的必需组件。在此方法内调用setContentView(),以定义Activity用户界面的布局。

2.2创建此Activity的布局页面

2.3AndroidMainfest.xml中进行Activity的注册

activity/android:name:要注册的Activity 的全限定类名
activity/android:label:Activity 左上角显示的名称

intent-filter:叫意图过滤器,一般用于隐式启动该Activity
action/android:name:意图过滤器的Action 名称,可以自定义也可以使用系统提供的。
category/android:name:意图过滤器的category 名称,只能使用系统提供的常量值。

3.Avtivity的跳转
 Button bt = (Button) findViewById(R.id.bt);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                //创建需要启动的Activity对应的Intent
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                //启动intent对应的Activity
                startActivity(intent);
            }
        });

 为按钮设置监听,在点击后进行跳转。Activity之间的跳转是通过Intent实现的。

4.Activity之间的数据传输

  当一个Activity启动另一个Activity时,常常会有一些数据需要传过去。这时Intent就相当于一个“信使”,我们将需要传送的数据存入Intent中即可。、

Intent提供了多个方法来“携带”额外的数据,如下所示。

  • putExtras(Bundle data):向Intent中放入需要“携带”的数据包。

  • Bundle getExtras():取出Intent中所“携带”的数据包。

  • putExtra(String name,Xxx value):向Intent中按key-value对的形式存入数据。

  • getXxxExtra(String name):从Intent中按key取出指定类型的数据。

上述方法中的Bundle就是一个简单的数据携带包,该Bundle对象包含了多个方法来存入数据。

  • putXxx(String key, Xxx value):向Bundle中放入Int、Long等各种类型的数据。

  • putSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象。

  • getXxx(String key):从Bundle中取出Int、Long等各种类型的数据。

  • getSerializable(String key):从Bundle中取出一个可序列化的对象。


public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);

        Button bn = (Button) findViewById(R.id.bn);
        bn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                EditText name = (EditText) findViewById(R.id.name);
                EditText passwd = (EditText) findViewById(R.id.passwd);
                RadioButton male = (RadioButton) findViewById(R.id.male);
                String gender = male.isChecked() ? "男" : "女";
                Person p = new Person();
                p.setName(name.getText().toString());
                p.setPasswd(passwd.getText().toString());
                p.setGender(gender);

                //创建一个Bundle对象
                Bundle data = new Bundle();
                data.putSerializable("person", p);
                //创建一个Intent
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtras(data);
                //启动intent对应的Activity
                startActivity(intent);
            }
        });
    }
}


public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seconde_layout);

        TextView name = (TextView) findViewById(R.id.name);
        TextView passwd = (TextView) findViewById(R.id.passwd);
        TextView gender = (TextView) findViewById(R.id.gender);
        //获取启动该Activity的Intent
        Intent intent = getIntent();
        //直接通过Intent取出它所携带的Bundle数据包中的数据
        Person p = (Person) intent.getSerializableExtra("person");
        name.setText("您的用户名为:" + p.getName());
        passwd.setText("您的密码为:" + p.getPasswd());
        gender.setText("您的性别为:" + p.getGender());
    }
}

5.生命周期

activity的4种状态
(1)running:activity处于栈顶,处于活动状态,用户点击屏幕,屏幕可以做出响应
(2)paused:失去焦点,用户点击屏幕没有响应,状态信息和成员变量还存在,但是内存紧张时被销毁。
(3)stopped:完全被覆盖,状态信息和成员变量也还存在,但是内存紧张时也会被销毁。
(4)killed:activity已经被系统回收掉了,状态信息和成员变量都已经不在了

 

原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12304638.html