在会议室中插入改造响应正文

时间:2018-11-01 17:15:47

标签: android retrofit2 android-room sigsegv

我正在尝试在会议室中插入response.body()的{​​{1}},但是我得到了

User

它显示在A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 23714 (AsyncTask #2) 中,但是当我尝试对其进行缓存时,我的应用程序崩溃了。

这是代码

RecyclerView

我正在遵循this我的应用指南。

这是DAO方法

   private void refreshUser() {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    retrofit2.Response<User> response=webservice.getUser("1").execute();
                    User fromNetwork=response.body();

                    mUserDao.insertUser(fromNetwork);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
}

用户实体(响应主体)

@Insert(onConflict = OnConflictStrategy.REPLACE)    
void insertUser(User user);

和视图模型

@Entity(tableName = "user_table")
public class User {

    @PrimaryKey
    @NonNull
    private String uid;
    @NonNull
    @ColumnInfo(name = "password")
    private String password;
    @SerializedName("first_name")
    @ColumnInfo(name = "first_name")
    private String firstName;
    @SerializedName("last_name")
    @ColumnInfo(name = "last_name")
    private String lastName;
    @ColumnInfo(name = "role")
    private int role;
    @ColumnInfo(name = "topic")
    private String topic;
    @ColumnInfo(name = "lab")
    private String lab;

    //constructor, setters and getters
}

1 个答案:

答案 0 :(得分:0)

我知道了。 User传递的response.body()在一个字段中的值错误,因此Room无法启动错误,因为它无法在数据库中插入错误的值。

相关问题