当前位置: 首页 > news >正文

用ps怎么做网站首页北京最新消息今天

用ps怎么做网站首页,北京最新消息今天,2022口碑最好的十款手机,花店网站建设目的文章目录 深入分析 Android Activity (四)1. Activity 的生命周期详解1.1 onCreate1.2 onStart1.3 onResume1.4 onPause1.5 onStop1.6 onDestroy1.7 onRestart 2. Activity 状态的保存与恢复2.1 保存状态2.2 恢复状态 3. Activity 的启动优化3.1 延迟初始化3.2 使用 ViewStub3.…

文章目录

      • 深入分析 Android Activity (四)
      • 1. Activity 的生命周期详解
        • 1.1 `onCreate`
        • 1.2 `onStart`
        • 1.3 `onResume`
        • 1.4 `onPause`
        • 1.5 `onStop`
        • 1.6 `onDestroy`
        • 1.7 `onRestart`
      • 2. Activity 状态的保存与恢复
        • 2.1 保存状态
        • 2.2 恢复状态
      • 3. Activity 的启动优化
        • 3.1 延迟初始化
        • 3.2 使用 `ViewStub`
        • 3.3 分析启动性能
      • 4. 深入理解 Activity 的窗口管理
        • 4.1 `Window`
        • 4.2 `WindowManager`
      • 5. Activity 的任务和返回栈管理
        • 5.1 启动 Activity 的 Intent 标志
        • 5.2 处理返回栈中的数据
      • 6. Activity 的内存管理
        • 6.1 内存泄漏检测
      • 7. Activity 的主题和样式
        • 7.1 自定义主题
        • 7.2 动态切换主题
      • 总结

深入分析 Android Activity (四)

1. Activity 的生命周期详解

Activity 的生命周期方法提供了一组回调,使开发者能够在不同状态下执行相应的逻辑。了解这些方法有助于开发者管理资源和确保应用程序的行为一致。

1.1 onCreate

onCreateActivity 的入口点,系统在创建 Activity 时调用。这个方法是设置界面和初始化资源的最佳位置。

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Initialize resources
}
1.2 onStart

onStart 方法在 Activity 对用户可见时调用,但此时用户还无法进行交互。此方法适合开始准备界面所需的资源。

@Override
protected void onStart() {super.onStart();// Prepare resources that need to be visible to the user
}
1.3 onResume

onResume 方法在 Activity 准备好与用户进行交互时调用。此方法适合开始动画、音频播放等需要用户交互的操作。

@Override
protected void onResume() {super.onResume();// Resume animations, audio playback, etc.
}
1.4 onPause

onPause 方法在 Activity 即将停止与用户交互时调用。这是保存数据和停止动画等操作的好时机。

@Override
protected void onPause() {super.onPause();// Pause animations, save data, etc.
}
1.5 onStop

onStop 方法在 Activity 不再对用户可见时调用。此方法适合释放不再需要的资源。

@Override
protected void onStop() {super.onStop();// Release resources no longer needed
}
1.6 onDestroy

onDestroy 方法在 Activity 被销毁前调用。这里是进行最终清理的好地方。

@Override
protected void onDestroy() {super.onDestroy();// Clean up resources
}
1.7 onRestart

onRestart 方法在 Activity 从停止状态重新启动时调用。这里可以重新初始化在 onStop 方法中释放的资源。

@Override
protected void onRestart() {super.onRestart();// Re-initialize resources released in onStop
}

2. Activity 状态的保存与恢复

为了应对配置变化和进程被系统回收等情况,Activity 提供了 onSaveInstanceStateonRestoreInstanceState 方法来保存和恢复状态。

2.1 保存状态

onSaveInstanceStateActivity 即将被销毁时调用,用于保存临时状态信息。

@Override
protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putString("key", "value");
}
2.2 恢复状态

onRestoreInstanceStateActivity 被重新创建后调用,用于恢复之前保存的状态信息。

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);String value = savedInstanceState.getString("key");
}

也可以在 onCreate 方法中恢复状态:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (savedInstanceState != null) {String value = savedInstanceState.getString("key");}
}

3. Activity 的启动优化

在实际开发中,优化 Activity 的启动时间对于提升用户体验非常重要。以下是一些常见的优化技巧:

3.1 延迟初始化

将非关键资源的初始化延迟到用户实际需要的时候,从而减少 onCreate 方法的执行时间。

// Load non-critical data after the UI is rendered
private void loadNonCriticalData() {new Handler().postDelayed(() -> {// Load non-critical data here}, 1000);
}
3.2 使用 ViewStub

对于可能不会立即显示的布局,可以使用 ViewStub 延迟加载。

<ViewStubandroid:id="@+id/view_stub"android:layout_width="match_parent"android:layout_height="match_parent"android:layout="@layout/your_layout"/>

在代码中加载:

ViewStub viewStub = findViewById(R.id.view_stub);
View inflatedView = viewStub.inflate();
3.3 分析启动性能

使用 Android Profiler 分析 Activity 的启动性能,找到并优化瓶颈。

// Profile your app to identify performance bottlenecks

4. 深入理解 Activity 的窗口管理

4.1 Window

WindowActivity 管理视图的顶级窗口,Activity 使用 PhoneWindow 类来实现。Window 管理状态栏、标题栏和内容区域。

4.2 WindowManager

WindowManager 是一个系统服务,负责管理窗口。通过 WindowManager 可以控制窗口的布局参数。

Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.height = WindowManager.LayoutParams.MATCH_PARENT;
params.width = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(params);

5. Activity 的任务和返回栈管理

Android 使用任务和返回栈来管理 Activity 的导航。每个任务由一个栈来管理 Activity

5.1 启动 Activity 的 Intent 标志

使用 Intent 标志控制 Activity 的启动行为和返回栈。例如:

  • FLAG_ACTIVITY_NEW_TASK:在新的任务中启动 Activity
  • FLAG_ACTIVITY_CLEAR_TOP:如果目标 Activity 已经在栈中存在,则将其上面的所有 Activity 清除。
Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
5.2 处理返回栈中的数据

使用 onActivityResult 方法处理从另一个 Activity 返回的数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {String result = data.getStringExtra("key");// Handle the result}
}

在启动 Activity 时可以传递请求代码:

Intent intent = new Intent(this, AnotherActivity.class);
startActivityForResult(intent, REQUEST_CODE);

6. Activity 的内存管理

Android 系统会在内存不足时终止后台 Activity,以释放资源。因此,必须在 onSaveInstanceStateonRestoreInstanceState 中保存和恢复关键数据。

6.1 内存泄漏检测

使用工具如 LeakCanary 进行内存泄漏检测:

// Add LeakCanary dependency in build.gradle
dependencies {debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:2.7'
}// Initialize LeakCanary in Application class
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();if (LeakCanary.isInAnalyzerProcess(this)) {return;}LeakCanary.install(this);}
}

7. Activity 的主题和样式

通过自定义主题和样式,可以统一管理 Activity 的外观和行为。

7.1 自定义主题

res/values/styles.xml 中定义自定义主题:

<resources><style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style>
</resources>

AndroidManifest.xml 中应用自定义主题:

<activity android:name=".MyActivity"android:theme="@style/CustomTheme">
</activity>
7.2 动态切换主题

通过 recreate 方法动态切换 Activity 的主题:

// Change theme and recreate Activity
setTheme(R.style.CustomTheme);
recreate();

总结

Android Activity 的设计涵盖了生命周期管理、视图层次结构、任务和返回栈管理、内存管理、主题和样式等方面。理解这些概念和内部实现有助于开发者创建高效、稳定和响应迅速的应用程序。通过灵活应用这些知识,可以提升应用程序的用户体验和性能。

欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力

在这里插入图片描述

http://www.tj-hxxt.cn/news/114858.html

相关文章:

  • 自己如何做电影网站游戏推广公司怎么接游戏的
  • 容桂网站建设原创在百度怎么创建自己的网站
  • 做web网站时要添加图片大小网站软件下载大全
  • 信息技术网站建设专业樱桃bt官网
  • 官方网站建设要点搜索引擎优化排名培训
  • 山东网站优化公司我要学电脑哪里有短期培训班
  • wordpress好看的页面布局深圳seo排名优化
  • 如何做家乡网站除了百度指数还有哪些指数
  • 做网站需要去哪里备案软文的概念是什么
  • 广州高端品牌网站建设哪家公司好中文域名查询官网
  • 网站开发英文广西seo关键词怎么优化
  • 网站优化 保定网站怎么制作
  • 用vs2013网站开发新站整站优化
  • wordpress洛米主题关键词推广优化排名品牌
  • 网站建设所属行业新app推广去哪里找
  • 手机营销型网站制作谷歌seo优化
  • 武汉网站建设公司有哪些2345网址导航官方网站
  • vue 做企业网站行不谷歌seo怎么做
  • 鹤壁做网站的网络公司凡科建站小程序
  • 网站建设周期关键词排名优化公司推荐
  • asp.net 网站的头部和底部怎么来做 includeseo网站关键词优化费用
  • 百度做网站投广告免费seo网站自动推广软件
  • 南通网站外包微信推广怎么做
  • 莱芜新闻头条长尾词优化外包
  • 慈溪网站设计百度软件市场
  • 学做网站有多难百度seo什么意思
  • 北京市办理居住卡在哪个网站做seo详细教程
  • 网站建设公司发展前景专业的营销团队哪里找
  • 中国建行官方网站企业培训系统app
  • 视觉设计作品集莱阳seo外包