Java Android 开发综合教程
目录
-
(图片来源网络,侵删)- 1 为什么选择 Java 开发 Android?
- 2 安装 Java Development Kit (JDK)
- 3 安装 Android Studio
- 4 配置 Android SDK
- 5 创建第一个 Android 项目:Hello World
-
- 1 Android 应用的四大组件
- 2 Activity:用户界面
- 3 Intent:组件间的“信使”
- 4 Service:后台任务
- 5 BroadcastReceiver:广播接收器
- 6 ContentProvider:数据共享
-
- 1 布局管理器
- 1.1 LinearLayout (线性布局)
- 1.2 RelativeLayout (相对布局)
- 1.3 ConstraintLayout (约束布局 - 现代、推荐)
- 2 常用 UI 控件
- TextView, Button, EditText, ImageView
- RecyclerView (列表 - 必学)
- 3 资源文件
字符串、颜色、尺寸、样式
- 4 事件处理
- 1 布局管理器
-
(图片来源网络,侵删)- 1 本地数据存储
- SharedPreferences (键值对)
- SQLite 数据库
- 2 网络编程基础
- 使用 HttpURLConnection
- 使用第三方库:OkHttp (推荐)
- 解析 JSON 数据 (使用 org.json 或 Gson)
- 3 权限申请 (Android 6.0+)
- 1 本地数据存储
-
- 1 多线程与异步任务
- AsyncTask (已过时,但原理重要)
- Handler 和 Message
- Thread + Handler (经典方式)
- ExecutorService (线程池)
- 2 生命周期
Activity 和 Fragment 的生命周期
- 3 Material Design 设计规范
- 4 依赖注入 (可选,但推荐)
- 5 单元测试与 Espresso UI 测试
- 1 多线程与异步任务
-
- 1 实战项目建议
- 2 进阶学习路径
第一部分:基础准备与环境搭建
1 为什么选择 Java 开发 Android?
- 官方支持:Android 最初就是用 Java 语言开发的,拥有最成熟、最丰富的官方文档和社区支持。
- 生态完善:海量的第三方库、框架和教程都是基于 Java 的。
- 学习曲线:对于有 C++ 或 C# 背景的开发者来说,Java 的语法相对容易上手。
- 稳定性:Java 是一门非常成熟和稳定的语言,适合构建大型、复杂的应用。
2 安装 Java Development Kit (JDK)
Android 应用最终被编译成 Dalvik/ART 字节码运行,但其开发语言 Java 需要编译成 .class 文件,你需要安装 JDK 来编译你的 Java 代码。

- 下载:访问 Oracle 官网 或 OpenJDK 官网 (推荐,开源)。
- 安装:按照向导完成安装,记住安装路径,后面配置需要用到。
- 验证:打开终端或命令提示符,输入
java -version和javac -version,如果显示版本号,则安装成功。
3 安装 Android Studio
这是 Google 官方推荐的集成开发环境,集成了代码编辑、调试、性能分析、模拟器管理等所有功能。
- 下载:访问 Android Studio 官网。
- 安装:根据你的操作系统,下载对应版本并运行安装程序,大部分选项保持默认即可。
4 配置 Android SDK
SDK (Software Development Kit) 是开发 Android 应用所需的工具包,Android Studio 在首次启动时会引导你下载 SDK。
- 启动 Android Studio,选择 "Custom"(自定义)安装。
- 在 "SDK Components Setup" 界面,确保勾选了 "Android SDK Location" 和 "Android Virtual Device"。
- 点击 "Finish",等待下载和安装完成,这个过程可能需要较长时间,请耐心等待。
5 创建第一个 Android 项目:Hello World
- 启动 Android Studio,点击 "New Project"。
- 选择 "Empty Activity" 模板,点击 "Next"。
- 配置项目:
- Name: 你的应用名称,如 "MyFirstApp"。
- Package name: 应用的唯一标识符,通常为反向域名格式,如
com.example.myfirstapp。 - Save location: 项目保存路径。
- Language: 选择 Java。
- Minimum SDK: 选择你希望支持的最低 Android 系统版本,选择最新的 API 级别(如 API 34)以获得新特性,但为了兼容性,初学者可以选择 API 24 或更高。
- 点击 "Finish",Android Studio 会为你构建项目。
运行项目:
- 创建模拟器:点击工具栏的 "AVD Manager" (一个手机图标),创建一个虚拟设备来运行你的应用。
- 运行:选择你创建的模拟器,然后点击绿色的 "Run" 按钮 (▶),几秒后,你就能在模拟器上看到 "Hello World!" 的字样了。
第二部分:Android 应用核心概念
1 Android 应用的四大组件
这是 Android 应用的基石,每个组件都有不同的角色和生命周期。
- Activity:用户界面,一个屏幕。
- Service:后台运行,没有界面的组件。
- BroadcastReceiver:接收系统或应用发出的广播消息。
- ContentProvider:应用间数据共享的标准接口。
2 Activity:用户界面
MainActivity.java 是应用的入口,它负责加载布局文件 activity_main.xml。
- 生命周期:
onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),理解这些回调方法对于管理资源至关重要。 - 布局文件:使用 XML 文件定义 UI 结构,位于
res/layout/目录下。
3 Intent:组件间的“信使”
Intent 是一个消息对象,可以用来请求一个应用组件执行操作。
- 显式 Intent:明确指定要启动的组件(类名),通常用于应用内部跳转。
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);
- 隐式 Intent:只描述要执行的操作(如打开网页、拨打电话),由系统选择合适的组件来处理。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(intent);
4 Service:后台任务
Service 在后台长时间运行,不提供用户界面,播放音乐、下载文件。
- 启动服务:
startService(),服务启动后可以无限期运行,直到被stopService()或stopSelf()。 - 绑定服务:
bindService(),允许组件(如 Activity)与服务进行交互,获取服务实例,当所有绑定者都解绑后,服务会被销毁。
5 BroadcastReceiver:广播接收器
用于接收系统或应用发出的广播,网络状态改变、电池电量低、系统启动等。
- 静态注册:在
AndroidManifest.xml中注册,应用关闭后也能接收某些系统广播。 - 动态注册:在代码中注册,通常在
onCreate()中,在onDestroy()中注销,应用关闭后无法接收。
6 ContentProvider:数据共享
为不同应用间的数据访问提供统一的接口,系统联系人、短信应用就是通过 ContentProvider 对外提供数据的,自己开发应用时,较少需要用到它。
第三部分:UI 开发详解
1 布局管理器
布局决定了 UI 控件在屏幕上的排列方式。
-
1.1 LinearLayout (线性布局) 子控件按垂直或水平方向排列。
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 或 "horizontal" --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2" /> </LinearLayout> -
1.2 RelativeLayout (相对布局) 子控件相对于父容器或其他子控件进行定位,非常灵活,但嵌套过深会影响性能。
-
1.3 ConstraintLayout (约束布局 - 现代、推荐) 通过定义控件之间的约束关系来定位,性能优异,支持复杂的布局,且可以减少布局层级,是目前 Google 主推的布局方式。
2 常用 UI 控件
- TextView: 显示文本。
- Button: 可点击的按钮。
- EditText: 可编辑的文本框。
- ImageView: 显示图片。
- RecyclerView: 高效的列表视图,用于显示大量可滚动数据。这是必须掌握的控件,它需要一个
Adapter来绑定数据,一个LayoutManager来管理布局。
3 资源文件
资源文件存放在 res/ 目录下,便于管理和国际化。
res/values/strings.xml: 存储字符串。<string name="app_name">My First App</string> <string name="hello_world">Hello World!</string>
res/values/colors.xml: 定义颜色。res/values/dimens.xml: 定义尺寸。res/layout/: 布局文件。
在代码中引用资源:
// 在 Java/Kotlin 中 String appName = getResources().getString(R.string.app_name); // 在 XML 中 android:text="@string/hello_world"
4 事件处理
为 UI 控件(如 Button)添加点击事件。
// 方式一:在 XML 中定义 (推荐)
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:onClick="onButtonClick" />
// 在 Activity 中定义方法
public void onButtonClick(View view) {
Toast.makeText(this, "Button Clicked!", Toast.LENGTH_SHORT).show();
}
// 方式二:在 Java 代码中绑定 (更灵活)
Button myButton = findViewById(R.id.my_button);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件
}
});
第四部分:数据存储与网络编程
1 本地数据存储
-
SharedPreferences:用于存储简单的键值对数据,如设置、用户偏好。
// 保存数据 SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE).edit(); editor.putString("username", "John"); editor.putInt("age", 30); editor.apply(); // 读取数据 SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE); String username = prefs.getString("username", "default_user"); -
SQLite 数据库:用于存储结构化的、复杂的数据,Android 提供了
SQLiteOpenHelper辅助类来管理数据库的创建和升级。
2 网络编程基础
Android 应用常需要从服务器获取数据(如 JSON 格式的新闻列表)。
-
使用 HttpURLConnection:Java 标准库,但使用起来比较繁琐。
-
使用 OkHttp (推荐):一个高效的 HTTP 客户端,简化了网络请求。
// 添加依赖到 app/build.gradle 文件 // implementation 'com.squareup.okhttp3:okhttp:4.10.0' OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://api.example.com/data") .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 处理失败 } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String responseData = response.body().string(); // 解析 JSON 数据 Log.d("Network", responseData); } } }); -
解析 JSON 数据:
- org.json: Android 内置,使用
JSONObject和JSONArray。 - Gson (Google): Google 官方库,可以将 JSON 字符串直接转换成 Java 对象(POJO),非常方便。
- org.json: Android 内置,使用
3 权限申请 (Android 6.0+)
从 Android 6.0 (API 23) 开始,敏感权限需要在运行时动态申请,而不是只在 AndroidManifest.xml 中声明。
// 1. 在 AndroidManifest.xml 中声明
<uses-permission android:name="android.permission.INTERNET" />
// 2. 在代码中动态请求
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
// 如果没有权限,请求权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.INTERNET},
MY_PERMISSIONS_REQUEST_INTERNET);
} else {
// 已经有权限,执行操作
}
第五部分:高级主题与最佳实践
1 多线程与异步任务
UI 线程 (主线程):所有 UI 操作都必须在主线程进行,耗时操作(如网络请求、文件读写)不能在主线程执行,否则会导致应用卡顿甚至“应用无响应”(ANR)。
- Handler 和 Message:经典机制,用于在子线程中向主线程发送消息,更新 UI。
- AsyncTask:已过时,但理解其原理(后台线程执行任务,完成后回调主线程更新 UI)很重要。
- ExecutorService:Java 标准的线程池,用于管理后台任务。
- RxJava / Coroutines (Kotlin):现代、强大的异步编程解决方案,对于 Java 开发者,可以学习 RxJava。
2 生命周期
理解 Activity 和 Fragment 的生命周期是写出健壮代码的关键,在 onPause() 中保存临时数据,在 onDestroy() 中释放资源(如关闭数据库连接、注销广播接收器)。
3 Material Design 设计规范
Google 推出的设计语言,提供了统一的视觉、交互和 motion 设计原则,使用 Material Components for Android 库,可以轻松实现符合规范的美观 UI。
4 依赖注入 (可选,但推荐)
依赖注入框架(如 Dagger 2, Hilt)可以帮你管理对象的生命周期和依赖关系,降低代码耦合度,提高可测试性,Hilt 是 Google 官方推荐的,是 Dagger 的超集。
5 单元测试与 Espresso UI 测试
- 单元测试:测试单个方法或类的逻辑,在 JVM 上运行。
- Espresso UI 测试:测试应用的 UI 交互,在真机或模拟器上运行,可以模拟用户点击、输入等操作。
第六部分:项目实战与学习路径
1 实战项目建议
从简单到复杂,逐步构建项目:
- 待办事项列表:
- 功能:增删改查待办事项。
- 技术点:
RecyclerView,SQLite,CursorAdapter,AlertDialog。
- 天气预报应用:
- 功能:输入城市名,从网络 API 获取天气数据并显示。
- 技术点:网络请求 (OkHttp), JSON 解析 (Gson), 权限申请,
ListView或RecyclerView。
- 新闻阅读器:
- 功能:从新闻 API 获取文章列表,点击后进入详情页显示内容。
- 技术点:网络请求, JSON 解析, Activity 跳转, WebView 加载 HTML 内容。
2 进阶学习路径
- 架构模式:学习 MVVM (Model-View-ViewModel),这是目前 Android 开发的主流架构,能更好地分离 UI 和业务逻辑,LiveData 和 DataBinding 是 MVVM 的核心组件。
- 组件化开发:将大型应用拆分成多个独立的、可复用的组件。
- Jetpack:深入学习 Android Jetpack 组件,如 Room (数据库), ViewModel, LiveData, WorkManager (后台任务), Navigation (导航) 等。
- 性能优化:学习 ANR 分析、UI 渲染性能优化、内存优化等。
- Kotlin:虽然本教程是 Java,但强烈建议在掌握 Java 基础后转向 Kotlin,Kotlin 是 Android 官方推荐的语言,更安全、更简洁、更强大。
学习资源推荐
- 官方文档:developer.android.com (最权威、最准确)
- Android Developers 官方 YouTube 频道:有大量高质量的 Codelabs 和教程视频。
- Android 开发者社区:Stack Overflow, Android Studio 中文社区
- 书籍:《Android 编程权威指南》(Big Nerd Ranch 系列)、《第一行代码》。
祝你学习愉快,早日成为一名优秀的 Android 开发者!
