筑基期
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
设置点击事件处理器,当用户点击按钮时,将弹出提示消息。