杰瑞科技汇

Android Java开发如何入门?

目录

  1. Android 开发基础
    • 什么是 Android?
    • 开发环境搭建
    • 第一个 Android 项目:Hello World
    • 应用核心组件简介
  2. 核心概念与 UI 开发
    • Activity (活动)
    • Layout (布局) 与 View (视图)
    • Intent (意图)
    • 基本控件使用
  3. 数据存储
    • SharedPreferences (键值对存储)
    • SQLite 数据库
    • 文件存储
  4. 网络编程
    • 使用 HttpURLConnection
    • 使用第三方库 (如 Retrofit, OkHttp)
  5. 现代 Android 开发实践
    • 为什么推荐使用 Kotlin?
    • Java 在现代 Android 开发中的角色
  6. 学习资源与最佳实践
    • 官方文档
    • 推荐书籍与教程
    • 代码规范与工具

Android 开发基础

什么是 Android?

Android 是一个基于 Linux 内核的开源操作系统,主要用于移动设备(如智能手机、平板电脑),它由 Google 主导并开放给 Open Handset Alliance(开放手机联盟)使用,对于开发者来说,Android 提供了一个强大的平台来创建丰富的移动应用程序。

Android Java开发如何入门?-图1
(图片来源网络,侵删)

开发环境搭建

你需要安装以下软件来开始开发:

  1. JDK (Java Development Kit): Android 应用使用 Java 语言编写,所以需要 JDK,推荐使用 JDK 8 或更高版本。
  2. Android Studio: 这是 Google 官方推荐的集成开发环境,它集成了代码编辑、调试、性能分析、模拟器管理等所有必要功能。下载地址: https://developer.android.com/studio
  3. Android SDK (Software Development Kit): Android Studio 会自动下载和管理 SDK,SDK 包含了开发 Android 应用所需的 API 库、模拟器系统镜像、工具等。

安装步骤:

  • 下载并安装 Android Studio。
  • 首次启动时,它会引导你完成 SDK 的下载和配置。

第一个 Android 项目:Hello World

创建新项目后,你会看到以下关键目录结构:

  • app/: 主要的应用代码目录。
    • manifests/: 包含 AndroidManifest.xml 文件,这是应用的清单文件,声明了应用的包名、组件、权限等。
    • java/: 包含你的 Java 源代码文件。
    • res/: 包含应用的资源文件(如布局、图片、字符串等)。
      • layout/: XML 布局文件。
      • values/: 字符串 (strings.xml)、颜色、尺寸等定义文件。
  • build/: 构建输出目录。

运行应用: 你可以通过点击 Android Studio 上的绿色 "Run" 按钮(▶️)来运行应用,它会启动一个模拟器或连接到你的真机。

Android Java开发如何入门?-图2
(图片来源网络,侵删)

应用核心组件简介

一个典型的 Android 应用由以下几个核心组件构成:

  • Activity: 应用的一个屏幕,负责与用户进行交互,一个 App 的登录界面、主界面、设置界面都是一个 Activity。
  • Service: 在后台运行没有用户界面的组件,音乐播放服务、下载服务。
  • Broadcast Receiver: 系统或应用间消息的接收者,监听电池电量低、网络状态改变等系统广播。
  • Content Provider: 管理应用数据的访问接口,允许一个应用访问另一个应用的数据(如联系人、相册)。

核心概念与 UI 开发

Activity (活动)

Activity 是用户交互的入口,每个 Activity 都有一个布局文件来定义它的界面。

// MainActivity.java
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 加载布局文件 activity_main.xml
        setContentView(R.layout.activity_main);
    }
}

Layout (布局) 与 View (视图)

  • View: UI 的基本单元,如按钮、文本框、图片等。
  • ViewGroup: 可以包含其他 View 或 ViewGroup 的容器,如布局管理器。

布局文件是 XML 文件,位于 res/layout/ 目录下,它定义了 UI 的结构。

示例: activity_main.xml

Android Java开发如何入门?-图3
(图片来源网络,侵删)
<?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="Hello, Android!"
        android:textSize="24sp" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:id="@+id/my_button" />
</LinearLayout>

Intent (意图)

Intent 是 Android 中不同组件间通信的“信使”,它主要用于:

  1. 启动 Activity: 从当前页面跳转到另一个页面。
  2. 启动 Service: 启动一个后台服务。
  3. 发送广播: 发送一个系统或应用内的事件。

示例: 点击按钮跳转到 SecondActivity

// 在 MainActivity.java 中
Button myButton = findViewById(R.id.my_button);
myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 创建一个 Intent,指定从当前 Activity 跳转到 SecondActivity
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
    }
});

别忘了在 AndroidManifest.xml 中声明 SecondActivity!

<activity android:name=".SecondActivity" />

基本控件使用

  • TextView: 用于显示文本。
  • EditText: 用于输入文本。
  • Button: 用于点击触发事件。
  • ImageView: 用于显示图片。
  • RecyclerView: 用于高效显示滚动列表(现代 Android 开发中强烈推荐)。

数据存储

Android 提供了多种数据存储方式,适用于不同场景。

SharedPreferences (键值对存储)

适合存储少量简单的配置数据,如用户设置、开关状态等,数据以 XML 文件形式保存在设备上。

// 保存数据
SharedPreferences.Editor editor = getSharedPreferences("my_prefs", MODE_PRIVATE);
editor.putString("username", "JohnDoe");
editor.putInt("age", 30);
editor.apply(); // 异步保存
// 读取数据
SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE);
String username = prefs.getString("username", "default_user");
int age = prefs.getInt("age", 0);

SQLite 数据库

适合存储结构化的、大量的数据,Android 提供了 SQLiteOpenHelper 类来帮助管理数据库的创建和升级。

// 创建一个帮助类
public class MyDatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "my_database.db";
    public static final int DATABASE_VERSION = 1;
    public MyDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表
        String CREATE_TABLE = "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)";
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 升级数据库
        db.execSQL("DROP TABLE IF EXISTS users");
        onCreate(db);
    }
}
// 使用
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase(); // 获取可写数据库
// 插入数据
ContentValues values = new ContentValues();
values.put("name", "Alice");
values.put("email", "alice@example.com");
db.insert("users", null, values);

文件存储

可以将数据直接以文件形式存储在设备的内部或外部存储中,适合存储大文件,如图片、视频、日志等。


网络编程

现代应用几乎都离不开网络,Android 从 Android 9 (API 28) 开始,默认限制了 HTTP 的使用,推荐使用 HTTPS。

使用 HttpURLConnection

这是 Java 标准库提供的原生方式,比较底层,需要手动处理线程和 IO。

// 注意:网络操作不能在主线程(UI线程)中进行!
new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            URL url = new URL("https://api.example.com/data");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            reader.close();
            // 在主线程更新UI
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // 解析 response 并更新UI
                    Log.d("Network Response", response.toString());
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}).start();

使用第三方库 (如 Retrofit, OkHttp)

手动处理网络请求非常繁琐,社区和 Google 推荐使用成熟的第三方库。

  • OkHttp: 一个高效的 HTTP 客户端,负责底层的网络请求。
  • Retrofit: 在 OkHttp 之上构建,提供了类型安全的 HTTP 客户端,它将网络请求接口化,用注解来描述请求,极大简化了开发。

Retrofit 示例:

  1. 添加依赖 (build.gradle):

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // 用于解析JSON
  2. 定义 API 接口:

    public interface ApiService {
        @GET("users/{user}")
        Call<User> getUser(@Path("user") String user);
    }
  3. 创建 Retrofit 实例并发起请求:

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://api.github.com/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ApiService service = retrofit.create(ApiService.class);
    Call<User> call = service.getUser("google");
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()) {
                User user = response.body();
                // 更新UI
            }
        }
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // 处理失败
        }
    });

现代 Android 开发实践

为什么推荐使用 Kotlin?

自 2025 年起,Google 宣布 Kotlin 为 Android 开发的首选语言,原因如下:

  • 简洁性: Kotlin 代码更短,可读性更高。
  • 空安全: 从语言层面杜绝了 NullPointerException,大大减少了崩溃。
  • 互操作性: 可以 100% 与 Java 代码互操作,你可以在同一个项目中混合使用。
  • 协程: 提供了更优雅、更简单的异步编程解决方案,替代了复杂的 AsyncTask 和回调地狱。

Kotlin 示例 (对比上面的 Java 代码):

// Activity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val myButton: Button = findViewById(R.id.my_button)
        myButton.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }
}

Java 在现代 Android 开发中的角色

尽管 Kotlin 是首选,但 Java 仍然非常重要:

  1. 庞大的存量代码: 许多现有的优秀应用和库都是用 Java 编写的。
  2. 学习资源丰富: 大量的教程、书籍和开源项目仍然是 Java 的。
  3. 团队技能: 很多开发者团队仍然在使用 Java。
  4. 互操作性: Kotlin 调用 Java 非常简单,所以维护 Java 项目或使用 Java 库没有障碍。

对于新项目,强烈建议直接使用 Kotlin,但对于学习或维护旧项目,Java 依然是必须掌握的技能。


学习资源与最佳实践

官方文档

推荐书籍与教程

  • 书籍:
    • Android Programming: The Big Nerd Ranch Guide (经典,有 Java 和 Kotlin 版)
    • Head First Android Development (适合入门,图文并茂)
  • 在线教程:
    • B站/YouTube: 搜索 "Android Java 教程",有大量免费视频课程。
    • Udemy/Coursera: 搜索 "Android Development",有很多付费的高质量课程。

代码规范与工具

  • 代码风格: 遵循 Google 的 Java 代码风格指南,Android Studio 的代码格式化工具可以帮助你自动完成。
  • 版本控制: Git 是行业标准,使用 GitHubGitLab 来管理你的代码。
  • 构建工具: Gradle 是 Android 的默认构建工具,用于管理依赖和构建流程。
  • 日志工具: 使用 Logcat 查看日志,推荐使用 Timber 这样的日志库来简化日志代码。

希望这份详细的指南能帮助你顺利开启 Android Java 开发之旅!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇