当前位置:首页 > 行业动态 > 正文

安卓开发入门数据

安卓开发入门数据存储常用SharedPreferences、SQLite、文件及网络存储,掌握基础API与数据操作是

安卓开发入门数据存储与管理

数据存储方式

存储方式 特点 适用场景
SharedPreferences 轻量级键值对存储,本质为XML文件 简单配置、用户偏好设置
SQLite数据库 关系型数据库,支持SQL语句操作 结构化数据存储、复杂查询
文件存储 以文件形式保存数据(如文本、二进制) 媒体文件、配置文件持久化
Room持久库 基于SQLite的抽象层,提供编译时校验和流畅API 复杂数据库操作、MVVM架构
网络数据缓存 使用OkHttp缓存或第三方库(如Retrofit+Cache) 网络请求结果临时存储

常用数据解析格式

  1. JSON解析

    • 库:GsonMoshiFastJSON
    • 示例:
      Gson gson = new Gson();
      User user = gson.fromJson(jsonString, User.class);
  2. XML解析

    • 库:PullParserDOM/SAXSimple
    • 示例:
      XmlResourceParser parser = getResources().getXml(R.xml.config);
      // 读取节点属性和值

数据库操作实践(以Room为例)

  1. 定义实体类

    安卓开发入门数据  第1张

    @Entity(tableName = "users")
    public class User {
        @PrimaryKey(autoGenerate = true)
        public int id;
        @ColumnInfo(name = "name")
        public String name;
        // 其他字段...
    }
  2. 创建DAO接口

    @Dao
    public interface UserDao {
        @Insert
        void insert(User user);
        @Query("SELECT  FROM users WHERE id = :userId")
        User getUserById(int userId);
    }
  3. 配置数据库

    @Database(entities = {User.class}, version = 1)
    public abstract class AppDatabase extends RoomDatabase {
        public abstract UserDao userDao();
    }
  4. 使用数据库

    AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "app-db").build();
    UserDao userDao = db.userDao();
    userDao.insert(new User(...));

数据绑定与ViewModel

  1. 数据绑定

    • 在布局文件中使用<layout>标签:
      <data>
          <variable name="user" type="com.example.User"/>
      </data>
      <TextView android:text="@{user.name}" />
    • 在Activity中设置数据:
      User user = new User("John");
      binding.setVariable(BR.user, user);
  2. ViewModel使用

    • 定义ViewModel:
      public class UserViewModel extends ViewModel {
          private MutableLiveData<User> user = new MutableLiveData<>();
          public void setUser(User u) { user.setValue(u); }
          public LiveData<User> getUser() { return user; }
      }
    • 在Activity中观察:
      UserViewModel viewModel = new ViewModelProvider(this).get(UserViewModel.class);
      viewModel.getUser().observe(this, user -> {
          // 更新UI
      });

常见问题与解答

问题1:SharedPreferences的commit()apply()有什么区别?

解答

  • commit():同步提交,返回布尔值表示是否成功,会阻塞主线程。
  • apply():异步提交,无返回值,不会阻塞主线程,推荐在UI线程使用。

问题2:Room相比直接使用SQLite的优势是什么?

解答

  1. 编译时校验:通过注解生成代码,避免运行时错误。
  2. 简化操作:自动处理SQLite的繁琐操作(如迁移、多线程)。
  3. 流畅API:支持LiveData和RxJava,适配现代安卓架构(如MVVM)。
0