Java Android小部件更新陌生度w/sqlite数据库

Java Android小部件更新陌生度w/sqlite数据库,java,android,sqlite,widget,Java,Android,Sqlite,Widget,所以我正在制作一个排序计时器小部件,它从sqlite数据库中提取信息。当数据库中只有1个条目时,该窗口小部件看起来会按预期工作,但当超过1个条目时,该窗口小部件似乎会在值之间闪烁。例如,1秒后,您将看到第一个值,然后下一个第二个值将是下一个值等。下面是代码,请注意查看提醒值的命令fetchdeck(5),如果该值超过当前时间,则不会显示。因此,一旦条目1的时间到了,就应该转到条目2 public class MyWidgetProvider extends AppWidgetProvider {

所以我正在制作一个排序计时器小部件,它从sqlite数据库中提取信息。当数据库中只有1个条目时,该窗口小部件看起来会按预期工作,但当超过1个条目时,该窗口小部件似乎会在值之间闪烁。例如,1秒后,您将看到第一个值,然后下一个第二个值将是下一个值等。下面是代码,请注意查看提醒值的命令fetchdeck(5),如果该值超过当前时间,则不会显示。因此,一旦条目1的时间到了,就应该转到条目2

public class MyWidgetProvider extends AppWidgetProvider {
    private DBadapter mDbHelper;
    Cursor note;
    private long reminder;
    private String title, summary;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {  
        mDbHelper = new DBadapter(context);
        mDbHelper.open();
        note = mDbHelper.fetchDecks(5);
        note.moveToFirst();
        reminder = note.getLong(
                note.getColumnIndexOrThrow(mDbHelper.KEY_REMINDER));
        title = note.getString(
                note.getColumnIndexOrThrow(mDbHelper.KEY_TITLE));
        summary = note.getString(
                note.getColumnIndexOrThrow(mDbHelper.KEY_SUMMARY));  
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
    }

    private class MyTime extends TimerTask {
        RemoteViews remoteViews;
        AppWidgetManager appWidgetManager;
        ComponentName thisWidget;

    public MyTime(Context context, AppWidgetManager appWidgetManager) {
        this.appWidgetManager = appWidgetManager;
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        thisWidget = new ComponentName(context, MyWidgetProvider.class);
    }

    @Override
    public void run() {
        long current = System.currentTimeMillis(); 
        long diff = reminder - current;
        remoteViews.setTextViewText(R.id.TextView01, countDown(diff));
        remoteViews.setTextViewText(R.id.update, title);
        appWidgetManager.updateAppWidget(thisWidget, remoteViews);          
    }

    private String countDown(long result) {
        String mMinutes,mSeconds,mHours, mDays;
        int seconds = (int) (result / 1000) % 60 ;
        if (seconds == 0) {
            mSeconds = "0" + Integer.toString(seconds);
        } 
        else if (seconds <= 9) {
            mSeconds = "0" + Integer.toString(seconds);
        } else {
            mSeconds = Integer.toString(seconds);
        }

        int minutes = (int) ((result / (1000*60)) % 60);
        if (minutes == 0) {
            mMinutes = "0" + Integer.toString(minutes);
        } 
        else if (minutes <= 9) {
            mMinutes = "0" + Integer.toString(minutes);
        } else {
            mMinutes = Integer.toString(minutes);
        }

        int hours   = (int) ((result / (1000*60*60)) % 24);
        if (hours == 0) {
            mHours = "0" + Integer.toString(hours);
        } 
        else if (hours <= 9) {
            mHours = "0" + Integer.toString(hours);
        } else {
            mHours = Integer.toString(hours);
        }

        int days = (int) (result / (1000*60*60*24));
        if (days == 0) {
            mDays = "0" + Integer.toString(days);
        } 
        else if (days <= 9) {
            mDays = "0" + Integer.toString(days);
        } else {
            mDays = Integer.toString(days);
        }
        String tRemaining = mDays + " days | " + mHours + " hours | " + mMinutes + " mins | " + mSeconds + " secs";     
        return tRemaining;
    }

    } 
}
公共类MyWidgetProvider扩展了AppWidgetProvider{
私人数据库适配器MDB帮助器;
光标注释;
私人长提醒;
私有字符串标题、摘要;
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
mDbHelper=新的DBadapter(上下文);
mDbHelper.open();
注=mDbHelper.fetchDecks(5);
注意:moveToFirst();
提醒=note.getLong(
注意:getColumnIndexOrThrow(mDbHelper.KEY_提醒);
title=note.getString(
注:getColumnIndexOrThrow(mDbHelper.KEY_TITLE));
summary=note.getString(
注:getColumnIndexOrThrow(mDbHelper.KEY_摘要);
定时器=新定时器();
timer.scheduleAtFixedRate(新的MyTime(上下文,appWidgetManager),11000);
}
私有类MyTime扩展TimerTask{
远程视图远程视图;
AppWidgetManager AppWidgetManager;
组件名称thisWidget;
公共MyTime(上下文上下文,AppWidgetManager AppWidgetManager){
this.appWidgetManager=appWidgetManager;
RemoteView=新的RemoteView(context.getPackageName(),R.layout.widget\u layout);
thisWidget=新组件名(上下文,MyWidgetProvider.class);
}
@凌驾
公开募捐{
长电流=System.currentTimeMillis();
长差=提醒-电流;
setTextViewText(R.id.TextView01,倒计时(diff));
setTextViewText(R.id.update,title);
UpdateAppWidgetManager.updateAppWidget(此小部件,远程视图);
}
私有字符串倒计时(长结果){
字符串毫米、毫秒、小时、天;
整数秒=(整数)(结果/1000)%60;
如果(秒==0){
mSeconds=“0”+整数.toString(秒);
} 

否则,如果(秒计算出来。是xml文件中的问题导致的。

请显示
fetchdeck