我目前正在使用我创建的 Android 内容提供商我在服务中使用查询方法,因为我必须每 2 秒更新一次结果我的问题是我想获取数据库中的最后一行,我把 sursor 到最后一个位置,但每次他都给我他在数据库中找到的所有数据。
这是我开发的服务:
package fr.esigetel.echange.service;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
import fr.esigetel.mediatag.cp.WifiProvider;
public class informationService extends Service {
Timer mTimer;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
returnContentProvider();
}
};
@Override
public void onCreate() {
super.onCreate();
mTimer = new Timer();
Log.d("onCreate informationService", "onCreate informationService");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mHandler.sendEmptyMessage(0);
}
}, 0, 5000);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
if (mHandler != null) {
mHandler = null;
}
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public informationService() {
}
private void returnContentProvider() {
Uri myuri = Uri.parse("content://fr.esigetel.mediatag.cp/maxdata");
ContentResolver cr = getContentResolver();
Cursor c = cr.query(myuri, null, null, null, null);
int idRech = c.getColumnIndex(WifiProvider.MAX_COL_ID);
int nameap = c.getColumnIndex(WifiProvider.MAX_COL_APName);
int adressemac = c.getColumnIndex(WifiProvider.MAX_COL_AdresseMac);
int rssi = c.getColumnIndex(WifiProvider.MAX_COL_RSSI);
int frequence = c.getColumnIndex(WifiProvider.MAX_COL_Freq);
int daterech = c.getColumnIndex(WifiProvider.MAX_Date);
c.moveToLast();
while (c.moveToPrevious()) {
int id = c.getInt(idRech);
String name = c.getString(nameap);
String mac = c.getString(adressemac);
int Rssi = c.getInt(rssi);
int Freq = c.getInt(frequence);
int Daterech = c.getInt(daterech);
try {
} catch (Exception e) {
System.out.println(e.getMessage());
}
Log.d("aaaaaa", name);
}
c.close();
}
我怎么能只请求数据库的最后一行?这个方法总是给我整个数据。