0
点赞
收藏
分享

微信扫一扫

深入理解 Transformer:构建先进 NLP 模型的关键技术

1.Activity的生命周期

核心生命周期回调

1)onCreate()

  • 当 Activity 被创建时调用
  • 这是初始化组件的最佳时机,比如设置布局、绑定数据等。
  • 示例代码:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化其他组件...
    }

2)onStart()

  • 当 Activity 变得可见但尚未获取焦点时调用。
  • 在这个阶段,用户到 Activity,但是还不能与之交互

3)onResume()

  • 当 Activity 开始与用户交互并获得焦点时调用
  • 此时 Activity 处于活动状态,并可以响应用户的输入。

示例代码:

@Override
protected void onResume() {
    super.onResume();
    // 恢复暂停的操作,如开始传感器监听...
}

4)onPause()

  • 当 Activity 部分被遮挡或完全不可见时调用。
  • 系统可能会在 Activity 不再处于前台时调用此方法,例如当新的 Activity 启动或者对话框出现时。
  • 在这里应该释放一些资源以提高系统性能。
  • 示例代码:
@Override
protected void onPause() {
    super.onPause();
    // 停止占用CPU的动画或其他操作...
}

5)onStop()

  • 当 Activity 对用户完全不可见时调用。
  • 在这个阶段,Activity 已经不再显示给用户,但仍驻留在内存中
  • 示例代码:
@Override
protected void onStop() {
    super.onStop();
    // 更多清理工作...
}

6)onRestart()

  • 当 Activity 从停止状态动时调用
  • 它总是在 onStart() 方法之前调用。
  • 示例代码:
@Override
protected void onRestart() {
    super.onRestart();
    // 重启时的处理逻辑...
}

7)onDestroy()

  • 当 Activity 即将被销毁时调用
  • 在这里进行最后的清理工作,比如取消网络请求、关闭数据库连接等。
  • 示例代码:
@Override
protected void onDestroy() {
    super.onDestroy();
    // 清理所有剩余资源...
}

8)生命周期图示

+---------------------+
|      onCreate()     |
+---------------------+
          |
          v
+---------------------+
|      onStart()      |
+---------------------+
          |
          v
+---------------------+
|     onResume()      |
+---------------------+
          |
          v
+---------------------+  +---------------------+
|                      |  |    用户交互...     |
|    Activity活跃      |<->|                    |
|                      |  |                    |
+---------------------+  +---------------------+
          |
          v
+---------------------+
|     onPause()       |
+---------------------+
          |
          v
+---------------------+
|      onStop()       |
+---------------------+
          |
          v
+---------------------+
|      onDestroy()    |
+---------------------+

10)注意事项

  • onSaveInstanceState(Bundle outState) 和 onRestoreInstanceState(Bundle savedInstanceState) 是用于保存和恢复 Activity 状态的方法,它们通常在配置更改(如屏幕旋转)或低内存情况下的进程被杀死后重新创建 Activity 时使用。
  • 如果你在 AndroidManifest.xml 中为 Activity 设置了 android:configChanges 属性,那么系统会在配置改变时不会自动销毁并重建 Activity,而是会调用 onConfigurationChanged(Configuration newConfig) 方法。
  • 在处理 Activity 生命周期时,要确保你的应用能够优雅地处理各种可能的情况,包括突然的中断和意外的退出。

2.如何创建一个Activity

在res的目录 === > 鼠标右击  ===》 new   ===> Activity   ===>Empty Views Activity

手动创建一个AlterInfo

3.清单文件配置Activity  (AndroidManifest.xml

1)第一种配置

2)第二种配置

注:类名大写+

清单文件所有内容

4.如何启动和关闭

1)启动

2)关闭

3.Intent与IntentFilter

1)Intent

  Intent 是一种消息对象,它可以在不同组件之间发送,以执行特定的动作。它可以携带数据,并且可以指定要执行的操作的类型、目标组件以及一些额外的数据。

1-主要用途
  • 启动 Activity:使用 startActivity(Intent) 方法。
  • 启动 Service:使用 startService(Intent) 方法。
  • 发送广播:使用 sendBroadcast(Intent)sendOrderedBroadcast(Intent, String), 等方法。
2-创建 Intent
// 显式 Intent - 直接指定目标组件
Intent explicitIntent = new Intent(context, TargetActivity.class);

// 隐式 Intent - 通过 Action 和 Category 来匹配合适的组件
Intent implicitIntent = new Intent();
implicitIntent.setAction(Intent.ACTION_VIEW);
implicitIntent.setData(Uri.parse("http://www.example.com"));
3-添加额外数据
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("key", "value");
startActivity(intent);
4-接收额外数据
Intent intent = getIntent();
String value = intent.getStringExtra("key");

2)IntentFilter

IntentFilter 用来定义一个组件愿意接收哪种类型的 Intent。它通常在 AndroidManifest.xml 文件中与组件一起声明,或者在代码中动态创建。

1-声明方式
  • 在 Manifest 文件中声明

    <activity android:name=".TargetActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" />
        </intent-filter>
    </activity>
  • 在代码中动态创建

    IntentFilter filter = new IntentFilter();
    filter.addAction("com.example.MY_ACTION");
    registerReceiver(myBroadcastReceiver, filter);
2-组成部分
1--Action

        表示 Intent 的动作,例如 ACTION_VIEWACTION_SEND 等。

2--Category

        提供 Intent 的附加信息,比如 CATEGORY_DEFAULTCATEGORY_BROWSABLE 等。

3--Data

        指定 Intent 操作的数据和数据类型,例如 URI 和 MIME 类型。

3-匹配规则

当系统尝试找到能够响应给定 Intent 的组件时,会根据 IntentIntentFilter 的以下属性进行匹配:

1--Action

  Intent 的 action 必须与 IntentFilter 中的一个 action 匹配。

2--Category

  Intent 中的所有 category 都必须在 IntentFilter 中出现。

3--Data

      如果 Intent 包含 data,那么 data 必须与 IntentFilter 中的一个 data 规范匹配。

4.Activity之间的传递

1)数据传递

1-通过putExtra()方法传递

1--数据的传递
2--数据的接受

2-通过通过Bundle类传递数据

1--数据发送
2--数据接受

2)数据回传

1. startActivityForResult()方法 (activity销毁时,返回数据)

2.setResult()方法

3.onActivityResult()

接受回传数据

重写回传Activity页面的的onActivityResult()方法;

案例:模拟登录修改

流程图:

1.代码

1--xml代码

1---activity_main.xml代码

2---activity_login_main.xml代码

3---activity_alter_info.xml代码

4.AndroidManifest.xml

 

2--java代码

1---MainActivity

2---LoginInfo

3---AlterInfo

2.效果

举报

相关推荐

0 条评论