2-1. 活动(Activity)

1.概述活动

1-1.活动是什么

是一种可以包含用户界面的组件,主要用于和用户进行交互。

1-2.Activity的四种状态

1-3.Activity的生命周期

1-3-1.详解

  1. onCreate()

第一次被创建时调用

  1. onStart()

活动由不可见变为可见时调用

  1. onResume()

活动准备好与用户进行交互时调用(活动位于栈顶,处于运行状态)

  1. onPause()

系统准备启动或者恢复另一个活动的时候调用

  1. onStop()

活动完全不可见的时候调用

  1. onDestory()

活动被销毁之前调用(之后的活动为销毁状态)

  1. onRestart()

活动由停止状态重新变为启动状态使用

1-3-2.测试代码

package com.example.fristapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
//   创建--- 运行状态 (界面打开)
//    创建
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("Activity生命周期","onCreate()方法调用");
    }
//    可见时调用
    @Override
    protected void onStart( ) {
        super.onStart();
        Log.i("Activity生命周期","onStart()方法调用");
    }
//  交互时调用
    @Override
    protected void onResume( ) {
        super.onResume();
        Log.i("Activity生命周期","onResume()方法调用");
    }
    //   运行---暂停---销毁       (界面关闭)
//  启动或者恢复另一个活动使用
    @Override
    protected void onPause( ) {
        super.onPause();
        Log.i("Activity生命周期","onPause()方法调用");
    }
//完全不可见的调用
    @Override
    protected void onStop( ) {
        super.onStop();
        Log.i("Activity生命周期","onStop()方法调用");
    }
//  销毁
    @Override
    protected void onDestroy( ) {
        super.onDestroy();
        Log.i("Activity生命周期","onDestroy()方法调用");
    }
}

1-3-3.返回栈

安卓是使用任务(Task)管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈被称为返回栈(back Task);每启动一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。当按下Back键或者finish()方法去销毁一个活动,它的返回栈会入栈处于栈顶的位置。

2.创建和配置Activity

2-1.创建Activity

2-1-1.创建继承自Activity的activity

  • 创建java类

./app/src/main/java/com.example.packageName/className

//fristapp为包名  DetailActivity 为类名
package com.example.fristapp;
public class DetailActivity {
}

  • 创建继承Activity
package com.example.fristapp;

import android.app.Activity;

public class DetailActivity extends Activity {
}

2-1-2.重写需要的回调方法

  • onCreate()

ctrl+o 打开方法框 -> 选择onCreate()

...

public class DetailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

2-1-3.设置要显示的视图

  • setContentView()
...

public class DetailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //设置布局
    }
}

2-2.配置Activity

  • AndroidManifest.xml (配置文件)

activity 标签配置活动; package属性写对应的配置包名称;android:name属性写对应的类名称,通过“.ClassName”的方法获取

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fristapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.FristApp">
        ...
        <activity android:name=".DetailActivity"
            android:label="详细"/>
    </application>

</manifest>
  • layout创建活动

./app/src/main/java/com.example.packageName右击->(new->activity->Gallery)

3.启动和关闭Activity

使用intent从主活动跳转到其他活动

3-1.使用显示intent

启动activity

  1. 创建activity
  2. 设置活动视图
  3. 获取按钮添加setOnClickListener()事件
  4. 创建intent
  5. 触发intent后 启动活动(startActivity)
...
public class MainActivity2 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); //创建活动
        setContentView(R.layout.activity_main2);    //设置活动视图
        Button button=(Button) findViewById(R.id.Btn1); //通过id获取按钮
        button.setOnClickListener(new View.OnClickListener() {  //设置按钮点击事件
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity2.this,MainActivity.class);    //创建intent
                startActivity(intent);  //启动活动
            }
        });
    }
}

关闭activity

按下Back键或者finish()销毁activity

...
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();       //关闭活动
            }
        });
    }
}

当两个活动都使用了finish(),会关闭界面

3-2.使用隐式intent

通过action和category等信息,然后交由系统去分析这个Intent,并帮我们找到合适的活动去启动。

  1. AndroidManifest.xml中通过标签配置
...
      <activity
            android:name=".MainActivity"
            android:exported="false">
            <intent-filter>
                <action android:name="com.example.project1.ACTION_START1"/> <!-- 设置默认打开的活动 -->
                <category android:name="android.intent.category.DEFAULT"/>  <!--指定当前活动能够响应action-->
            </intent-filter>
        </activity>
  1. MainActivity(活动)中创建intent

Intent intent=new Intent("com.example.project1.ACTION_START1");写入对应配置

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        Button button=(Button) findViewById(R.id.Btn3); //通过id获取按钮
        button.setOnClickListener(new View.OnClickListener() {  //设置按钮点击事件
            @Override
            public void onClick(View v) {
            Intent intent=new Intent("com.example.project1.ACTION_START1"); //使用隐式转换,intent("转换对应地址")
                startActivity(intent);  //启动活动
            }
        });
    }

3-3.更多隐式intent的使用方法

可以启动其他程序的活动,使Android多个应用程序共享成为可能

3-3-1.url跳转

使用setData()方法解析url;使用Intent.ACTION_VIEW系统内置intent

...
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(Intent.ACTION_VIEW);   //使用系统内置intent
                intent.setData((Uri) Uri.parse("https://www.cnblogs.com/mywifeisMsHu/p/15936251.html"));
                startActivity(intent);
            }
        });
    }

3-3-2.调用系统拨号界面

...
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(Intent.ACTION_DIAL);   //系统内置intent
                intent.setData((Uri) Uri.parse("tel:10086"));
                startActivity(intent);
            }
        });
    }

4.Activity的一些技巧

4-1.刷新Activity

onCreate(null);

4-2.创建Tost

       button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity3.this, "您点击了该按钮", Toast.LENGTH_SHORT).show();
            }
        });
posted @ 2022-02-28 15:00  禾耳  阅读(718)  评论(0)    收藏  举报