你不知道的Activity- 使用详解,安卓卡顿优化

在代码中 Activity生命周期回调方法


Activity生命周期回调方法如下:

// Activity 创建方法

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.i(TAG, “----onCreate----”);

setContentView(R.layout.activity_methods);

}

// Activity 在最新任务列表中打开时候会走此方法

@Override

protected void onRestart() {

super.onRestart();

Log.i(TAG, “----onRestart----”);

}

// Activity 在onCreate 或者 onRestart之后执行

@Override protected void onStart() {

super.onStart();

Log.i(TAG, “----onStart----”);

}

// 正在与用户交互的界面

@Override

protected void onResume() {

super.onResume();

Log.i(TAG, “----onResume----”);

}

// 被其他与用户交互的Activity 部分覆盖

@Override

protected void onPause() {

su

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

per.onPause();

Log.i(TAG, “----onPause----”);

}

// 被其它与用户交互的Activity 全部覆盖

@Override

protected void onStop() {

super.onStop();

Log.i(TAG, “----onStop----”);

}

// Activity 销毁时候调用此方法

@Override

protected void onDestroy() {

super.onDestroy();

Log.i(TAG, “----onDestroy----”);

}

Activity 4 种 生命周期状态


Activity常见的四种生命周期状态如下:

  1. Active 运行状态

  2. Pause 暂停状态

  3. Stop 停止状态

  4. Killed 消亡状态

2. Activity 必须在 AndroidMainfest.xml 中注册

========================================

Activity是四大组件之一,Android规定四大组件必须在AndroidMainfest.xml 中注册,Activity如果不注册,则会引起 App Crash 报错。

ActivityNotFoundException


Activity不在AndroidMainfest.xml中注册,则app将会报错,报错主要异常信息如下 :

ActivityNotFoundException

例如以下报错信息:

//提示未在 AndroidMainfest.xml 中找到Activity类的声明

android.content.ActivityNotFoundException:Unable to find explicit activity class

//具体类名,包名如下:

{com.wj.utils/com.wj.utils.basewidget.BaseButtonMethods};

//需要在AndroidManifest 中声明

have you declared this activity in your AndroidManifest.xml?

Activity 注册方法如下:


<manifest … >

<application … >

</application … >

常用Action 标签


android.action.MAIN:

表示是当前App的入口 main 方法类。

android.intent.category.LAUNCHER:

表示 此Action 会被Launcher扫描到,可以显示在LauncherIcon列表上,如果去掉此Action,则无法在Launcher种查看到此appIcon

3. 启动Activity 的方法

==================

显示启动


Intent intent = new Intent(ActivityMethods.this, OtherActivity.class)

startActivity(intent);

隐式启动


Intent intent = new Intent(“string_action”);

// intent.setAction(“string_action”);

startActivity(intent);

4. 启动带返回值的Activity

===================

启动带返回值的Activity方法


Intent intent = new Intent();

intent.setClass(ActivityMethods.this, OtherActivity.class);

startActivityForResult(intent, mRequestCode);

处理返回值的回调方法


// 获取 Activity 返回结果的方法

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == mRequestCode && resultCode == mResultCode) {

String result = data.getStringExtra(“str_set_result”);

Toast.makeText(this, “result :” + result, Toast.LENGTH_SHORT).show();

}

}

被启动Activity设置返回值的方法


int resultCode = 101;

Intent intent = new Intent();

intent.putExtra(“str_set_result”, “带返回结果的Activity”);

setResult(resultCode, intent);

5. Activity结束 方法

=================

如果想结束掉当前Activity ,可以调用一下方法

//1.直接调用finish方法 ,结束当前Activity

finish();

//2.根据请求码结束Activity

finishActivity(int requestCode);

6. Activity状态保存,恢复的方法

======================

Activity异常退出时候,Activity会自动保存一些数据,但是,如果是app重要数据,还请在代码中手动保存Bundle类型的数据,防止Activity保存的数据不理想。

Activity 状态保存与恢复


Activity 状态保存与恢复的周期图如下:

image

Activity 状态保存与恢复的回调方法


Activity状态保存与恢复的回调方法如下:

// Activity 恢复数据的方法,经常在 oncreate 方法中恢复数据

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

Log.i(TAG, “----onRestoreInstanceState----”);

}

// Activity 保存数据的方法,经常在 onPause 方法中保存数据

@Override

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {

super.onSaveInstanceState(outState, outPersistentState);

Log.i(TAG, “----onSaveInstanceState----”);

}

7. 面试中经常问到的例子

==============

Activity A 启动 Activity B, 然后再返回A,简述一下其生命周期?

===========================================

  1. 首先A启动的声明周期如下:

01-02 21:25:22.357 21225-21225/com.android.program.programandroid

@Override

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {

super.onSaveInstanceState(outState, outPersistentState);

Log.i(TAG, “----onSaveInstanceState----”);

}

7. 面试中经常问到的例子

==============

Activity A 启动 Activity B, 然后再返回A,简述一下其生命周期?

===========================================

  1. 首先A启动的声明周期如下:

01-02 21:25:22.357 21225-21225/com.android.program.programandroid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值