1

我目前正在使用我创建的 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();
}

我怎么能只请求数据库的最后一行?这个方法总是给我整个数据。

4

1 回答 1

3
Cursor c = cr.query(myuri, null, null, null, null);
c.moveToLast();

现在光标处于最后位置并获取最后记录数据

  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);
于 2013-07-19T12:28:49.717 回答