本文共 5123 字,大约阅读时间需要 17 分钟。
参考资料:https://www.cnblogs.com/zhangmiao14/p/10754565.html
生命周期方法 | 作用 | 说明 |
---|---|---|
onCreate | 表示 Activity 正在被创建 | activity 被创建时调用,一般在这个方法中进行活动的初始化工作,如设置布局工作、加载数据、绑定控件等。 |
onRestart | 表示 Activity 正在重新启动 | 这个回调代表了 Activity 由完全不可见重新变为可见的过程,当 Activity 经历了 onStop() 回调变为完全不可见后,如果用户返回原 Activity,便会触发该回调,并且紧接着会触发 onStart() 来使活动重新可见。 |
onStart | 表示 Activity 正在被启动 | 经历该回调后,Activity 由不可见变为可见,但此时处于后台可见,还不能和用户进行交互。 |
onResume | 表示 Activity 已经可见 | 已经可见的 Activity 从后台来到前台,可以和用户进行交互。 |
onPause | 表示 Activity 正在停止 | 当用户启动了新的 Activity ,原来的 Activity 不再处于前台,也无法与用户进行交互,并且紧接着就会调用 onStop() 方法,但如果用户这时立刻按返回键回到原 Activity ,就会调用 onResume() 方法让活动重新回到前台。而且在官方文档中给出了说明,不允许在 onPause() 方法中执行耗时操作,因为这会影响到新 Activity 的启动。 |
onStop | 表示 Activity 即将停止 | 这个回调代表了 Activity 由可见变为完全不可见,在这里可以进行一些稍微重量级的操作。需要注意的是,处于 onPause() 和 onStop() 回调后的 Activity 优先级很低,当有优先级更高的应用需要内存时,该应用就会被杀死,那么当再次返回原 Activity 的时候,会重新调用 Activity 的onCreate()方法。 |
onDestroy | 表示 Activity 即将被销毁 | 来到了这个回调,说明 Activity 即将被销毁,应该将资源的回收和释放工作在该方法中执行。 |
情况 | 回调 |
---|---|
第一次启动 | onCreate() -> onStart() -> onResume() |
从 A 跳转到 B | A_onPause() -> B_onCreate() -> B_onStart() -> B_onResume() -> A_onStop() |
从 B 再次回到 A | B_onPause() -> A_onRestart() -> A_onStart() -> A_onResume() -> B_onStop() |
用户按 home 键 | onPause() -> onStop() |
按 home 键后回到应用 | onRestart() -> onStart() -> onResume() |
用户按电源键屏保 | onPause() -> onStop() |
用户按电源键亮屏 | onRestart() -> onStart() -> onResume() |
用户按 back 键回退 | onPause() -> onStop() -> onDestroy() |
package com.shu;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); System.out.println("生命周期创造了"); } @Override protected void onStart() { super.onStart(); System.out.println("生命周期开始了了"); } @Override protected void onRestart() { super.onRestart(); System.out.println("生命周期重复了"); } @Override protected void onResume() { super.onResume(); System.out.println("用户已经可见了"); } @Override protected void onPause() { super.onPause(); System.out.println("生命周期正在停止了"); } @Override protected void onStop() { super.onStop(); System.out.println("生命周期停止了"); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("生命周期销毁了"); }}
问题 | 回调 |
---|---|
由活动 A 启动活动 B时,活动 A 的 onPause() 与 活动 B 的 onResume() 哪一个先执行? | 活动 A 的 onPause() 先执行,活动 B 的 onResume() 方法后执行 |
标准 Dialog 是否会对生命周期产生影响 | 没有影响 |
全屏 Dialog 是否会对生命周期产生影响 | 没有影响 |
主题为 Dialog 的 Activity 是否会对生命周期产生影响 | 有影响,与跳转 Activity 一样 |
View
View
在Android
中可以理解为视图。它占据屏幕上的一块矩形区域,负责提供 组件绘制和事件处理的方法。View
类是所有的widgets
组件的基类。View
类位于android.view
包中;View
类的子类一般都位于android.widge
t包中。viewGroup
ViewGroup
在Android中可以理解为容器。
ViewGroup
类继承自View类,它是View类的扩 展,是用来容纳其他组件的容器;
ViewGroup
是一个抽象类,在实际应用中使用ViewGroup
的子类来作为容器的。
ViewGroup.MarginLayoutParams
类 ViewGroup.LayoutParams
类
ViewGroup
是一个抽象类,也是其他容器类的基类。它的一些实现类有: LinearLayout(线性布局)
,RelativeLayout(相对布局)
,TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局)
Padding和Margins
Padding
:在View的顶部、底部、左侧和右侧的填充像素,也称为内边距。 它设置的是内容与View边缘的距离。Padding将占据View的宽度和高度。 设置指定的内边距后,视图内容将偏离View边缘指定的距离。Margins
:组件的顶部、底部、左侧和右侧的空白区域,称为外边距。它 设置的是组件与其父容器的距离。Margins不占据组件的宽度和高度。为 组件设置外边距后,该组件将远离父容器指定的距离,如果还有相邻组件, 那么也将远离其相邻组件指定距离常用属性
android:gravity
:是对view控件本身来说的,是用来设置view本身的内容 应该显示在view的什么位置,默认值是左侧
android:layout_gravity
:是相对于包含该元素的父元素来说的,设置该元 素在父元素的什么位置
权重 用来等比例划分(
weight
)
FrameLayout
(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角。
android:foreground
:设置改帧布局容器的前景图像android:foregroundGravity
:设置前景图像显示的位置ScrollView
和HorizontalScrollView
,分别支持视图的垂直滚动和水平滚动。父容器布局
控件布局
TableLayout
的用法还是很简单的,无非就是确定表格的行数,以及使用 那三个属性来设置每一行中的第某列的元素隐藏,拉伸,或者收缩即可!
网格布局(GridLayout)与表格布局相似,用 一组无限细的直线将界面分割成行、列、单 元。然后,指定控件显示的区域和控件在该 区域的显示方式。网格布局实现了控件的交 错显示,避免使用布局嵌套,更有利于自由 编辑布局的开发。
px(像素)
:屏幕上的点,pixels(像素)不同设备显示效果相同in(英寸)
:长度单位mm(毫米)
:长度单位pt(磅)
:1/72英寸dp(与密度无关的像素)
:一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1pxdip
:与dp相同, device independent pixels(设备独立像素). 不同设备有不同的显示效果,多用于 Google示例中。sp(与刻度无关的像素)
:与dp类似,但是可以根据用户的字体大小首选项进行缩放.scaled pixels(放大 像素). 主要用于字体显示best for textsize。