准备工作:开发环境搭建
在开始编码之前,你需要安装必要的软件和工具,目前官方推荐使用 Android Studio。
安装 Android Studio
这是 Google 官方提供的集成开发环境,集成了代码编辑、调试、性能分析、模拟器等所有你需要的功能。
- 下载地址: https://developer.android.com/studio
- 安装: 根据你的操作系统(Windows, macOS, Linux)按照向导进行安装即可,安装过程中会提示你安装 Android SDK(软件开发工具包)、Android Virtual Device (AVD) Manager(安卓虚拟设备管理器)等,保持默认选项即可。
配置 Java 开发环境
Android Studio 内部已经集成了 JDK(Java Development Kit),你不需要单独安装,它会自动使用其自带的 JDK,并配置好所有路径,对于初学者来说,这非常友好,你无需关心环境变量的配置。
重要提示: Android 主要使用 Java 8 和 Java 11 的特性,虽然 Android Studio 会为你配置好,但了解你使用的 Java 版本是有益的。
核心概念与架构
一个标准的 Android 应用程序(使用 Java 开发)通常遵循 MVC 或更现代的 MVVM 架构模式,下面是构成一个 App 的几个关键部分:
四大组件
这是 Android 应用的基石,每个 App 都由它们组成。
-
Activity (活动):
- 作用: 代表一个屏幕,一个 App 的登录界面、主界面、设置界面,每个通常都是一个 Activity。
- 生命周期: Activity 有一个非常关键的 生命周期,从创建、显示、暂停、停止到销毁,系统会回调相应的方法(如
onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy()),理解生命周期对于管理资源和用户交互至关重要。
-
Service (服务):
- 作用: 在后台长时间运行的任务,没有用户界面,播放音乐、下载文件、网络请求等。
- 特点: 即使用户离开了 App,Service 仍然可以在后台运行。
-
Broadcast Receiver (广播接收器):
- 作用: 接收系统或 App 发出的广播消息,手机电量低、网络状态改变、系统开机等。
- 特点: 它是一个被动组件,用来响应系统级事件。
-
Content Provider (内容提供者):
- 作用: 用于在不同 App 之间共享数据,系统的联系人、图片等数据就是通过 Content Provider 提供给其他 App 访问的。
- 使用频率: 在自己的 App 内部,我们更常用 SQLite 数据库 或 Room 来存储数据。
布局文件
界面是用 XML 文件定义的,存放在 res/layout/ 目录下,XML 描述了屏幕上有哪些控件(如按钮、文本框)以及它们的布局方式。
示例: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你好,Android!"
android:textSize="24sp" />
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我" />
</LinearLayout>
Manifest 文件
AndroidManifest.xml 是 App 的“身份证”和“配置中心”,它告诉系统关于你的 App 的所有重要信息:
- App 的包名
- 声明所有四大组件
- 声明 App 需要的权限(如访问网络、相机、位置等)
Java 代码与 UI 交互
Activity 与 XML 的关联
在 Java 代码中,你需要通过 setContentView() 方法将 XML 布局文件加载到当前的 Activity 中。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1. 加载布局文件
setContentView(R.layout.activity_main);
// 2. 通过 findViewById() 找到布局中的控件
Button myButton = findViewById(R.id.my_button);
// 3. 为控件设置点击事件监听器
myButton.setOnClickListener(v -> {
// 点击按钮后,弹出一个短暂的提示信息
Toast.makeText(MainActivity.this, "按钮被点击了!", Toast.LENGTH_SHORT).show();
});
}
}
现代 UI 开发方式:ViewBinding
直接使用 findViewById() 容易出错,且代码冗余,现代 Android 开发强烈推荐使用 ViewBinding。
- 启用: 在
build.gradle(Module: app) 文件中添加viewBinding { enabled = true }。 - 使用: 启用后,Android Studio 会为每个 XML 布局文件自动生成一个对应的 Java 类,你可以直接拿到这个类的实例来操作 UI,无需再写
findViewById()。
示例 (使用 ViewBinding):
// 在 Activity 中
private ActivityMainBinding binding; // 自动生成的类名
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用 binding 代替 setContentView
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// 直接通过 binding 对象访问控件
binding.myButton.setOnClickListener(v -> {
Toast.makeText(this, "按钮被点击了!", Toast.LENGTH_SHORT).show();
});
}
ViewBinding 能让代码更安全、更简洁、更易于维护。
数据存储与网络请求
一个有价值的 App 离不开数据。
本地数据存储
- SharedPreferences: 存储简单的键值对数据,适合保存用户的设置、开关状态等,数据以 XML 文件形式存储。
- SQLite 数据库: 一个轻量级的关系型数据库,适合存储结构化的数据,如用户信息、文章列表等。
- Room: 这是 Google 官方推荐的数据库访问库,它在 SQLite 之上提供了一个抽象层,使得数据库操作更加面向对象,并能与 LiveData 配合实现数据与 UI 的自动更新。
网络请求
App 需要从服务器获取数据或提交数据。
- HttpURLConnection: Java 标准库自带的 HTTP 客户端,功能简单,但使用起来比较繁琐。
- OkHttp: 一个非常流行、高效的 HTTP 客户端,是目前 Android 开发的事实标准。
- Retrofit: 一个基于 OkHttp 的类型安全的 HTTP 客户端,它通过定义接口的方式,将网络请求转化为方法调用,代码非常优雅、易于维护。
Retrofit 示例:
// 1. 定义 API 接口
public interface ApiService {
@GET("users/{user}")
Call<User> getUser(@Path("user") String user);
}
// 2. 在代码中使用
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create()) // 使用 Gson 解析 JSON
.build();
ApiService service = retrofit.create(ApiService.class);
Call<User> call = service.getUser("octocat");
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
// 处理返回的用户数据
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
// 处理请求失败
}
});
异步处理与线程
Android 的主线程(UI 线程)负责处理所有与 UI 相关的操作。耗时操作(如网络请求、数据库读写、大文件处理)绝对不能在主线程中执行,否则会导致 ANR (Application Not Responding) 应用无响应。
解决方案:
- AsyncTask (已过时): 早期用于后台任务的类,简单但有很多限制,现已不推荐使用。
- Thread + Handler: 手动创建线程,并通过 Handler 与主线程通信,比较繁琐。
java.util.concurrent包: 如ExecutorService,Future,CountDownLatch等,用于更灵活的线程管理。- Kotlin Coroutines (强烈推荐): 这是 Google 推荐的现代异步处理方案,使用
suspend函数和协程作用域,代码简洁且易于理解。注意:Kotlin Coroutines 是用 Kotlin 语言实现的,如果你只学 Java,可以暂时使用其他方案。 - RxJava: 一个强大的响应式编程库,用于处理异步事件流,功能强大但学习曲线较陡。
对于 Java 开发者,最常用和推荐的是 ExecutorService。
学习路径建议
-
第一步:基础入门
- 目标: 成功创建一个 "Hello World" App,并理解其基本结构。
- : 安装 Android Studio、创建项目、了解 Activity、布局文件、
R类、onCreate()、findViewById()、简单的点击事件。
-
第二步:UI 与交互
- 目标: 构建一个包含多种控件的界面,并能处理用户的各种输入。
- : 深入学习各种 UI 控件(TextView, EditText, Button, RecyclerView, ListView 等)、布局管理器(LinearLayout, RelativeLayout, ConstraintLayout)、使用 ViewBinding、
RecyclerView的适配器模式。
-
第三步:数据与网络
- 目标: 让 App 能够存储本地数据,并能从网络获取数据并显示在界面上。
- : SharedPreferences、SQLite 数据库基础、使用 Room、使用 OkHttp 和 Retrofit 进行网络请求、JSON 解析(如 Gson)、在后台线程执行网络请求。
-
第四步:高级特性
- 目标: 构建更复杂、更健壮的应用。
- : Service、Broadcast Receiver、多线程与异步处理(
ExecutorService)、依赖注入(如 Hilt)、架构组件(ViewModel, LiveData, Data Binding)、Material Design 设计规范。
-
第五步:发布与优化
- 目标: 将你的 App 打包并发布到 Google Play Store,并学习性能优化。
- : App 签名、生成 APK/AAB、发布流程、性能分析工具(Profiler)、内存优化、电量优化。
推荐资源
- 官方文档: https://developer.android.com/ (最权威、最准确的学习资料)
- Android Developers 官方 Codelabs: https://developer.android.com/courses (动手实践教程)
- Google I/O/Android Dev Summit 视频: YouTube 频道,了解最新的技术和最佳实践。
- 书籍:
- Android Programming: The Big Nerd Ranch Guide (经典入门书籍)
- Android in Action (内容深入)
- 社区:
- Stack Overflow: 解决编程问题的首选。
- 掘金、CSDN、思否: 国内优秀的开发者社区,有大量中文教程和文章。
使用 Java 进行 Android 开发是一项非常有价值的技能,虽然 Kotlin 已经成为 Google 的首选语言,但海量的现有项目和历史资料都是基于 Java 的,Java 本身依然是企业级开发的主流语言。
核心要点:
- 环境: Android Studio 是你的全部。
- 架构: 理解四大组件和 MVVM 架构。
- UI: XML 布局 + ViewBinding 是现代标准。
- 数据: Room (本地) + Retrofit (网络) 是黄金组合。
- 线程: 永远不要在主线程做耗时操作。
从一个小项目开始,逐步实践,你很快就能掌握 Android 开发的精髓,祝你学习愉快!
