{"id":6236,"date":"2022-05-09T10:30:00","date_gmt":"2022-05-09T02:30:00","guid":{"rendered":"http:\/\/xinyiworld.top\/wordpress\/?p=6236"},"modified":"2022-06-10T11:06:03","modified_gmt":"2022-06-10T03:06:03","slug":"room","status":"publish","type":"post","link":"http:\/\/xinyiworld.top\/wordpress_it\/?p=6236","title":{"rendered":"Room"},"content":{"rendered":"<p>\u5b98\u65b9\u6559\u7a0b\uff1a<a href=\"https:\/\/developer.android.com\/training\/data-storage\/room\">https:\/\/developer.android.com\/training\/data-storage\/room<\/a><\/p>\n<p>\u7279\u6027\uff1a\u4e0eRxJava\u7ed3\u5408\uff0c\u5b9e\u65f6\u5237\u65b0\u3002<\/p>\n<p>\u539f\u7406\uff1a<a href=\"https:\/\/blog.51cto.com\/u_15200109\/2786116\">https:\/\/blog.51cto.com\/u_15200109\/2786116<\/a><\/p>\n<h3>\u83b7\u53d6\u6570\u636e\u5e93\u6587\u4ef6\u7684\u4f4d\u7f6e<\/h3>\n<pre><code class=\"language-Java\">String currentDBPath=getDatabasePath(&quot;photex_db.db&quot;).getAbsolutePath();<\/code><\/pre>\n<p>\u5728Android11\u4e0a\u6253\u5370\u7684\u4f4d\u7f6e\u662f<code>\/data\/user\/10\/\u5305\u540d\/databases\/photex_db.db<\/code><\/p>\n<h3>\u6570\u636e\u5e93\u5347\u7ea7<\/h3>\n<ul>\n<li>\u6dfb\u52a0\u65b0\u8868<br \/>\n<a href=\"https:\/\/www.jianshu.com\/p\/d6a27f71d7d9\">https:\/\/www.jianshu.com\/p\/d6a27f71d7d9<\/a><\/li>\n<\/ul>\n<p>1.\u9996\u5148\u65b0\u5efa\u5b9e\u4f53\u7c7bentity<\/p>\n<pre><code class=\"language-Java\">@Entity(tableName = &quot;animal&quot;)\npublic class Animal {\n    @PrimaryKey(autoGenerate = true)\n    @ColumnInfo(name = &quot;id&quot;)\n    public  int id;\n\n    @Override\n    public String toString() {\n        return &quot;Animal{&quot; +\n                &quot;id=&quot; + id +\n                &quot;, name=&#039;&quot; + name + &#039;\\&#039;&#039; +\n                &#039;}&#039;;\n    }\n\n    @ColumnInfo(name=&quot;name&quot;,typeAffinity = ColumnInfo.TEXT)\n    public String name;\n\n}<\/code><\/pre>\n<p>2.\u5c06\u8868\u540d\u52a0\u5165userDataBase, \u5e76\u5347\u7ea7\u6570\u636e\u5e93\u7684\u7248\u672c<\/p>\n<pre><code class=\"language-Java\">@Database(entities = {User.class,Score.class,Animal.class},version = 2,exportSchema = false)\npublic abstract class UserDatabase extends RoomDatabase {\n    public static final String DB_NAME = &quot;UserDataBase.db&quot;;\n    private static volatile UserDatabase instance;<\/code><\/pre>\n<p>3.\u4fee\u6539Migration<\/p>\n<pre><code class=\"language-Java\">    \/**\n     * \u5347\u7ea7\u6570\u636e\u5e93\n     *\/\n    static final Migration MIGRATION_1_2=new Migration(1,2) {\n        @Override\n        public void migrate(@NonNull SupportSQLiteDatabase database) {\n          \/\/ database.execSQL(&quot;ALTER TABLE user ADD COLUMN subject INTEGER NOT NULL DEFAULT 1&quot;);\n            database.execSQL(&quot;CREATE TABLE animal(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT)&quot;);\n        }\n    };<\/code><\/pre>\n<p>4.\u6dfb\u52a0Migration<\/p>\n<pre><code class=\"language-Java\">    private static UserDatabase createDatabase(Context context) {\n        return Room.databaseBuilder(context,UserDatabase.class,DB_NAME).allowMainThreadQueries().addCallback(new RoomDatabase.Callback(){\n            @Override\n            public void onCreate(@NonNull SupportSQLiteDatabase db) {\n                super.onCreate(db);\n            }\n\n            @Override\n            public void onOpen(@NonNull SupportSQLiteDatabase db) {\n                super.onOpen(db);\n            }\n        }).addMigrations(MIGRATION_1_2).build();\n    }<\/code><\/pre>\n<button class=\"simplefavorite-button\" data-postid=\"6236\" data-siteid=\"1\" data-groupid=\"1\" data-favoritecount=\"0\" style=\"\">\u6536\u85cf <i class=\"sf-icon-star-empty\"><\/i><\/button>","protected":false},"excerpt":{"rendered":"<p>\u5b98\u65b9\u6559\u7a0b\uff1ahttps:\/\/developer.android.com\/training\/data-s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[277],"tags":[],"_links":{"self":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6236"}],"collection":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6236"}],"version-history":[{"count":6,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6236\/revisions"}],"predecessor-version":[{"id":6627,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/6236\/revisions\/6627"}],"wp:attachment":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6236"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}