筑基期
1. 什么是 Android?Android 应用的基本架构是什么?
Android 是由 Google 开发的开源移动操作系统,主要用于智能手机和平板电脑。
它基于 Linux 内核,并提供了丰富的应用开发框架,支持多种硬件平台和设备。
Android 应用的基本架构
应用层:由用户安装和使用的应用程序组成,如拨号、短信、相机等。
应用框架层:包括
Activity Manager、Window Manager等核心服务,用于管理应用的生命周期、界面等。系统运行库层:包含
Android Runtime和各种C/C++库,如SQLite、WebKit等。硬件抽象层(
HAL):提供硬件与系统之间的接口,如摄像头、传感器等。Linux内核层:负责内存管理、设备驱动、网络堆栈等低层系统服务。
2. 什么是 Activity?Activity 的生命周期有哪些阶段?
Activity 是 Android 应用中的基本组件,负责管理用户界面和与用户的交互。每个 Activity 通常对应应用的一个屏幕。
Activity 的生命周期包括以下阶段
onCreate():当Activity首次创建时调用,用于初始化界面和数据。onStart():Activity从不可见变为可见时调用,但还未处于前台状态。onResume():Activity进入前台并开始与用户交互时调用。onPause():当用户离开当前Activity,但还未完全关闭时调用,通常用于保存数据或状态。onStop():当Activity完全不可见时调用,通常用于释放不再需要的资源。onDestroy():当Activity被销毁时调用,表示生命周期的结束。
3. 什么是 Intent?如何在 Activity 之间传递数据?
Intent 是 Android 中用于描述应用间或组件间交互的对象。它可以启动新的 Activity,传递数据,启动服务等。
如何在 Activity 之间传递数据
通过 Intent 的 putExtra() 方法可以附加数据,并使用 startActivity() 启动新的 Activity。
示例
// 在第一个 `Activity` 中
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("message", "Hello from FirstActivity");
startActivity(intent);
// 在第二个 `Activity` 中
Intent intent = getIntent();
String message = intent.getStringExtra("message");
第一个 Activity 通过 putExtra() 将数据附加到 Intent,并传递到第二个 Activity,第二个 Activity 通过 getIntent() 获取传递过来的数据。
4. 什么是 Fragment?Fragment 和 Activity 有什么区别?
Fragment 是 Android 中一种可以嵌入到 Activity 中的组件,它代表应用的部分界面或行为,允许构建更灵活的用户界面。
一个 Activity 可以包含多个 Fragment。
区别
Activity:表示应用的一个完整屏幕,它是独立的,可以直接与用户交互。Fragment:是Activity的一部分,它不能独立存在,必须嵌入到Activity中管理,通常用于处理部分界面或功能模块。
在一个平板设备上,可能一个 Activity 包含多个 Fragment,每个 Fragment 负责一个独立的模块,而在手机上,可能不同模块分布在不同的 Activity 中。
5. 如何在 Android 中管理 UI 布局?常见的布局类型有哪些?
Android 提供了多种布局方式,用于管理应用的 UI 结构。UI 布局可以通过 XML 文件定义,也可以在代码中动态生成。
常见的布局类型
LinearLayout:按垂直或水平方向排列子视图,可以设置子视图的排列顺序。- 示例:
android:orientation="vertical"
- 示例:
RelativeLayout:通过相对定位子视图,如相对于父布局或其他视图的位置。ConstraintLayout:一个更灵活的布局,可以用来创建复杂的布局,减少嵌套层级,提高性能。FrameLayout:用于显示单个视图,所有子视图都堆叠在一起,后添加的视图会覆盖在前面的视图上。GridLayout:将子视图按行和列排列,适用于网格状布局。
示例 XML 布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"/>
</LinearLayout>
6. 什么是 RecyclerView?它与 ListView 有什么区别?
RecyclerView 是 Android 中用于显示大规模数据集的高级视图容器,支持灵活的布局管理和高效的内存回收。
RecyclerView 和 ListView 的区别
性能:
RecyclerView提供了更高效的内存回收机制,特别适合大数据列表的展示。布局管理:
RecyclerView支持多种布局管理器,如线性布局、网格布局和瀑布流布局,而ListView仅支持线性布局。扩展性:
RecyclerView更加模块化,提供了Adapter、ViewHolder、ItemDecoration等丰富的接口,方便开发者自定义布局和交互。
使用示例:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
MyAdapter adapter = new MyAdapter(myDataset);
recyclerView.setAdapter(adapter);
通过 LayoutManager 设置 RecyclerView 的布局方式,并将自定义的 Adapter 绑定到 RecyclerView。
7. 如何在 Android 中处理用户输入?常见的输入控件有哪些?
在 Android 中,用户输入是通过各种输入控件来处理的,开发者可以捕获用户的输入并响应事件。
常见的输入控件
EditText:用于文本输入的控件。Button:用于触发点击事件的按钮。CheckBox:用于用户选择多项的复选框。RadioButton和RadioGroup:用于在多个选项中选择一个的单选按钮组。Spinner:用于下拉选择的控件。
示例:
// 处理按钮点击事件
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button clicked!", Toast.LENGTH_SHORT).show();
}
});
通过 setOnClickListener() 方法为 Button 设置点击事件处理器,当用户点击按钮时,将弹出提示消息。