Java 检查整数值是否已增加?
我有以下代码,用于检查数据库中的行数Java 检查整数值是否已增加?,java,android,integer,Java,Android,Integer,我有以下代码,用于检查数据库中的行数 private void checkMMSRows(){ Cursor curPdu = getContentResolver().query(Uri.parse("content://mms/part"), null, null, null, null); if (curPdu.moveToNext()){ int number = curPdu.getCount(); System.out.println(
private void checkMMSRows(){
Cursor curPdu = getContentResolver().query(Uri.parse("content://mms/part"), null, null, null, null);
if (curPdu.moveToNext()){
int number = curPdu.getCount();
System.out.println(number);
}
}
我需要每秒钟运行一次这段代码,并在值更改时执行一些操作。问题是,我如何“检测”变化?任何帮助都将不胜感激。取决于运行此操作的上下文。 假设此方法所属的对象将在不同的检查之间存在,您只需向该对象添加一个int currentValue字段,在第一次检查时将该值存储在该字段中,然后在后续检查中将该值与存储的值进行比较(并在必要时进行更新)
基本上,添加一个类变量-您可以在类的所有实例中使其成为
static
,也可以使其成为一个实例变量(通过删除static
关键字)
每次获得一个数字时,您都可以将其与oldNumber
进行比较。比较后,将oldNumber
设置为当前数字-以便下次进行比较:
private static int oldNumber = -1;
private void checkMMSRows(){
Cursor curPdu = getContentResolver().query(Uri.parse("content://mms/part"), null, null, null, null);
if (curPdu.moveToNext()){
int number = curPdu.getCount();
System.out.println(number);
if(number != oldNumber){
System.out.println("Changed");
// add any code here that you want to react to the change
}
oldNumber = number;
}
}
更新:
我的答案是直截了当的代码破解和斜杠解决方案,但我可能会推荐。你可以为即将到来的新彩信注册一个
BraodCastreciver
,这样你就会知道已经发生了变化。而不是每秒钟检查一次元素是否发生了变化,您可能需要考虑另一种选择:只允许对该元素进行特殊访问,并在更改后执行一些操作。
这是一种众所周知的设计模式,称为
这是一种经过充分验证的设计模式,它将使您的代码更具可读性,并且可能还会提高应用程序的性能和正确性
编辑:
在java中,可以使用接口和类来执行此操作。+1。差不多是我的答案,但你几秒钟前就到了+1.很好的方法,但它可能有助于编写一个简化的解释-这取决于OP的“noob”程度。@Mikaveli:我在java.util中添加了指向Observer接口和Observable类的链接,我认为在阅读了wiki页面和这些类的javadocs之后,实现此模式应该不会太难。该方法是继续检查还是只检查一次,仅此而已?@androidnoob每次调用
getCount()
-它都会在每次调用后进行检查。因此,每次都是这样。oldname=number代码>编号无法解析为变量,是否需要将其声明为全局变量?它在此行声明int number=curPdu.getCount()代码>-条件语句前两行。如果您试图在If(curPdu.moveToNext()){…}
之外访问number
,则需要更改其范围。
private static int oldNumber = -1;
private void checkMMSRows(){
Cursor curPdu = getContentResolver().query(Uri.parse("content://mms/part"), null, null, null, null);
if (curPdu.moveToNext()){
int number = curPdu.getCount();
System.out.println(number);
if(number != oldNumber){
System.out.println("Changed");
// add any code here that you want to react to the change
}
oldNumber = number;
}
}