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

asp做网站主要技术网页制作设计培训

asp做网站主要技术,网页制作设计培训,开发小程序软件,青岛网络优化厂家深入分析 Android Activity (三) 1. Activity 的配置变化处理 当设备配置#xff08;如屏幕方向、语言、屏幕大小等#xff09;发生变化时#xff0c;默认情况下#xff0c;Android 会销毁并重新创建当前的 Activity。这种行为确保了新配置能够正确应用#xff0c;但在某…深入分析 Android Activity (三) 1. Activity 的配置变化处理 当设备配置如屏幕方向、语言、屏幕大小等发生变化时默认情况下Android 会销毁并重新创建当前的 Activity。这种行为确保了新配置能够正确应用但在某些情况下重新创建 Activity 会带来性能问题或不必要的复杂性。 可以通过 android:configChanges 属性来指定当特定配置变化发生时不销毁 Activity而是调用 onConfigurationChanged 方法。 1.1 处理配置变化 在 AndroidManifest.xml 文件中声明需要处理的配置变化 activity android:name.MyActivityandroid:configChangesorientation|screenSize|keyboardHidden /activity在 Activity 中覆盖 onConfigurationChanged 方法以处理配置变化 Override public void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);// Handle configuration changesif (newConfig.orientation Configuration.ORIENTATION_LANDSCAPE) {// Handle landscape orientation} else if (newConfig.orientation Configuration.ORIENTATION_PORTRAIT) {// Handle portrait orientation} }2. Activity 的存储和恢复状态 为了在配置变化、进程被终止或其他情况发生时保存和恢复 Activity 的状态可以使用 onSaveInstanceState 和 onRestoreInstanceState 方法。 2.1 保存状态 onSaveInstanceState 方法在 Activity 即将被销毁时调用用于保存临时状态信息 Override protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putString(key, value); }2.2 恢复状态 onRestoreInstanceState 方法在 Activity 被重新创建后调用用于恢复之前保存的状态信息 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 与 Fragment 的通信 Fragment 是一个可重用的 UI 组件能够在 Activity 中管理部分 UI 和逻辑。Fragment 可以独立于 Activity 管理自己的生命周期和状态。 3.1 通过接口进行通信 Activity 和 Fragment 之间可以通过接口进行通信。在 Fragment 中定义一个接口并在 Activity 中实现它 public class MyFragment extends Fragment {private OnFragmentInteractionListener mListener;public interface OnFragmentInteractionListener {void onFragmentInteraction(String data);}Overridepublic void onAttach(Context context) {super.onAttach(context);if (context instanceof OnFragmentInteractionListener) {mListener (OnFragmentInteractionListener) context;} else {throw new RuntimeException(context.toString() must implement OnFragmentInteractionListener);}}// Call this method to send data to the activitypublic void sendDataToActivity(String data) {if (mListener ! null) {mListener.onFragmentInteraction(data);}} }在 Activity 中实现接口方法 public class MyActivity extends AppCompatActivity implements MyFragment.OnFragmentInteractionListener {Overridepublic void onFragmentInteraction(String data) {// Handle interaction with the fragment} }3.2 通过 ViewModel 进行通信 使用 ViewModel 和 LiveData 可以在 Activity 和 Fragment 之间进行数据共享和通信尤其是在 MVVM 架构中 public class SharedViewModel extends ViewModel {private final MutableLiveDataString selected new MutableLiveDataString();public void select(String item) {selected.setValue(item);}public LiveDataString getSelected() {return selected;} }在 Activity 中 public class MyActivity extends AppCompatActivity {private SharedViewModel viewModel;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewModel new ViewModelProvider(this).get(SharedViewModel.class);viewModel.getSelected().observe(this, new ObserverString() {Overridepublic void onChanged(Nullable String item) {// Update the UI}});} }在 Fragment 中 public class MyFragment extends Fragment {private SharedViewModel viewModel;Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view inflater.inflate(R.layout.fragment_my, container, false);viewModel new ViewModelProvider(requireActivity()).get(SharedViewModel.class);viewModel.getSelected().observe(getViewLifecycleOwner(), new ObserverString() {Overridepublic void onChanged(Nullable String item) {// Update the UI}});return view;} }4. Activity 的窗口管理和视图层次结构 4.1 DecorView DecorView 是 Activity 窗口中的最顶层视图容器包含了状态栏、标题栏和内容区域。Window 类通过 setContentView 将视图层次结构添加到 DecorView 中。 Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); }4.2 Window 和 WindowManager Window 是一个抽象类表示一个顶级窗口。在大多数情况下Activity 使用 PhoneWindow 类它是 Window 的具体实现。WindowManager 是一个系统服务负责管理窗口。 通过 Window 和 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 的任务和返回栈Back Stack 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);总结 Android 的 Activity 设计涉及生命周期管理、启动模式、视图层次结构、与 Fragment 的交互、进程和线程模型、任务和返回栈管理、以及配置变化处理。理解这些关键概念和内部实现有助于开发者创建高效、稳定和响应迅速的应用程序。通过灵活应用这些知识可以提升应用程序的用户体验和性能。
http://www.tj-hxxt.cn/news/140724.html

相关文章:

  • 外贸网站模板有什么用专业建设网站哪家好
  • 微网站建设哪家好深圳微网站开发
  • 网站维护的要求包括哪些网络工程就业前景好吗
  • 我的世界服务器如何做充钱网站如何网站建设平台
  • 安徽省住房与城乡建设厅网站自己做设计图的app
  • 购物网站页面设计步骤网站开发策划个人简历
  • 网站建设的前端开发和后端开发企业网站的步骤
  • 网站建设报道稿荆州网站推广怎么做
  • 培训教育网站建设企业为什么要验资
  • 专门做音箱的网站自助免费网站建设平台
  • 在哪个网站做外快设计江西省建设网站
  • 深圳网站建设维护珠海网站开发公司哪家好
  • 泉州网站制作专业友情链接的作用大不大
  • 影视网站建设平台网站建设费用属于什么科目
  • 怎样用代码做网站临清网站制作
  • 平潭城乡住房建设厅网站自己建立网站怎么建
  • 招聘网站大全外贸网站是用什么软件做的
  • 三亚旅游网站策划书国内比较厉害电商设计公司
  • 网站开发商标属于哪一类wordpress手机登录设置
  • 公司建网站多少网站设计首页框架图片
  • 永嘉哪里有做网站网站 导出链接
  • 网站空间里绑定好域名网站建设开题报告
  • 哪里做网站域名不用备案沭阳哪里有做网站推广的
  • 湛江网站设计公司地址设计网站数据
  • 外贸soho建站公司怎样做直播网站app
  • 活动策划代运营的公司seo概念
  • 自己做直播网站给一个网站风格做定义
  • 网站后台如何更改九台网络推广
  • 高唐网站制作免费咨询律师24小时
  • 谷歌网站 百度苏州网站开发公司排名