在android中,我不确定我是否完全理解这个R课程.我正在浏览数独的例子,我有这段代码:
switch (v.getId()) // the id of the argument passed is evaluated by switch statement
{
case R.id.about_button: //
Intent i = new Intent(this, about.class);
startActivity(i);
break;
// More buttons go here (if any) ...
}
Run Code Online (Sandbox Code Playgroud)
我是Java的新手,但从我收集的内容看起来它正在接受输入(触摸屏触摸按钮)并评估参数.然后,如果识别出about按钮,则设置case语句,并创建新的界面屏幕,然后导航到手机上.
这是正确的吗?
如果我得到了正确的要点,为什么与"R"类交易呢?
为什么要调用它来识别按钮的ID?
我认为超类(在这个项目中)是SudokuActivity类.
我发现Dao返回的LiveData会在DB中更新行时调用它的观察者,即使LiveData值显然没有改变.
考虑类似以下示例的情况:
示例实体
@Entity
public class User {
public long id;
public String name;
// example for other variables
public Date lastActiveDateTime;
}
Run Code Online (Sandbox Code Playgroud)
示例道
@Dao
public interface UserDao {
// I am only interested in the user name
@Query("SELECT name From User")
LiveData<List<String>> getAllNamesOfUser();
@Update(onConflict = OnConflictStrategy.REPLACE)
void updateUser(User user);
}
Run Code Online (Sandbox Code Playgroud)
某个地方在后台线程
UserDao userDao = //.... getting the dao
User user = // obtain from dao....
user.lastActiveDateTime = new Date(); // no change to user.name
userDao.updateUser(user);
Run Code Online (Sandbox Code Playgroud)
UI中的某个地方
// omitted ViewModel …Run Code Online (Sandbox Code Playgroud) 我认为这是日志过多导致的问题,因为我增加了logd的环形缓冲区,只是Logcat -G 5m,它会让问题慢慢发生,但它仍然有.我可以解决这个问题

使用Android 4.3/Samsung BLE 2.0 SDK时,观察到当外围设备关闭时,SDK将立即或在延迟20秒后接收onConnectionStateChange(DEVICE_DISCONNECTED).根据我的经验,这取决于外围设备实现,其中一些将尝试报告它们被关闭而有些则没有,因此SDK必须等待约20秒才能超时.
为了消除这种行为,我尝试使用Timer来检查我是否可以读取某个特征.如果读取超时,我会调用disconnect(Android 4.3)/ cancelConnection(Samsung)来终止连接.调用本身成功,onConnectionStateChange回调返回状态GATT_SUCCESS.然后我打开外围设备并立即连接到它,发现服务,并在我尝试读/写/通知任何通知时遇到问题.通过在iOS中使用LightBlue,我可以确认外围设备没有连接.
关闭外围设备20秒后,我将收到DEVICE_DISCONNECTED回调.之后我再次联系,一切运作得很好.
有两个问题:1.我们是否应该在20秒延迟期间连接到外围设备?2.外围设备关闭时是否有任何方法可以获得通知?
提前致谢.