Java 时间服务不工作。运行时间服务时显示;不幸的是,我停了下来;

Java 时间服务不工作。运行时间服务时显示;不幸的是,我停了下来;,java,android,eclipse,sqlite,Java,Android,Eclipse,Sqlite,请帮助…我是android新手,我正在EclipseJuno中做我的第一个项目。 我有一个带有报警服务的提醒模块。提醒时间和日期存储在Sqlite数据库中,表名为rementer_tb。 这些值的保存在rementeractivity.java中完成,AlarmService创建一个新的java页面TimeService.java,该页面从我的主页ie LoginActivity.java调用(intent) @Override protected void onCreate(Bundle sa

请帮助…我是android新手,我正在EclipseJuno中做我的第一个项目。 我有一个带有报警服务的提醒模块。提醒时间和日期存储在Sqlite数据库中,表名为rementer_tb。 这些值的保存在rementeractivity.java中完成,AlarmService创建一个新的java页面TimeService.java,该页面从我的主页ie LoginActivity.java调用(intent)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reminder);
    //open sqlite and fetch id from xpence and pass to php page
    SQLiteDatabase db = openOrCreateDatabase("xpence", MODE_PRIVATE, null);
final   Cursor cur=db.rawQuery("select * from login",null); 
     //save details on click

    Save.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            AmountString=Amount.getText().toString().trim();
            DateString=Date.getText().toString().trim();
            TimeString=Time.getText().toString().trim();
            DescString=Desc.getText().toString().trim();


            if (cur.moveToFirst())
            {
                id = cur.getString(0).toString();
                doSaveRem(AmountString,DateString,TimeString,DescString,id);

            }




        }


    });
}

public void doSaveRem(final String AmountString,final String DateString,final String TimeString,final String DescString,final String id)
{

    //Toast.makeText(getApplicationContext(), "Loaded"+AmountString+DateString+TimeString+DescString+id,Toast.LENGTH_SHORT).show();

    db=openOrCreateDatabase("xpence", MODE_PRIVATE, null);

    //TABLE FOR SMS AND NOTIFY
    //Insert to SMSNOTIFY
        db.execSQL("create table if not exists reminder_tb(amount varchar,date varchar,time varchar,desc varchar,id,active_flag INTEGER DEFAULT 0)");
        db.execSQL("insert into reminder_tb(amount,date,time,desc,id) values('"+AmountString+"','"+DateString+"','"+TimeString+"','"+ DescString+"','"+id+"')");
        Cursor   c = db.rawQuery("SELECT * FROM reminder_tb", null);
        c.moveToFirst();
        if(c.getCount()>0)
         {

            Toast.makeText(getApplicationContext(),"Saved!",Toast.LENGTH_LONG).show();
            Amount.setText("");
            Date.setText("");
            Time.setText("");
            Desc.setText("");

         }
         db.close();
         finish();
}
第一次运行时,我的应用程序运行正常,没有任何错误。第二天,当我再次运行时,它的显示:不幸停止

这是我的提醒活动.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reminder);
    //open sqlite and fetch id from xpence and pass to php page
    SQLiteDatabase db = openOrCreateDatabase("xpence", MODE_PRIVATE, null);
final   Cursor cur=db.rawQuery("select * from login",null); 
     //save details on click

    Save.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            AmountString=Amount.getText().toString().trim();
            DateString=Date.getText().toString().trim();
            TimeString=Time.getText().toString().trim();
            DescString=Desc.getText().toString().trim();


            if (cur.moveToFirst())
            {
                id = cur.getString(0).toString();
                doSaveRem(AmountString,DateString,TimeString,DescString,id);

            }




        }


    });
}

public void doSaveRem(final String AmountString,final String DateString,final String TimeString,final String DescString,final String id)
{

    //Toast.makeText(getApplicationContext(), "Loaded"+AmountString+DateString+TimeString+DescString+id,Toast.LENGTH_SHORT).show();

    db=openOrCreateDatabase("xpence", MODE_PRIVATE, null);

    //TABLE FOR SMS AND NOTIFY
    //Insert to SMSNOTIFY
        db.execSQL("create table if not exists reminder_tb(amount varchar,date varchar,time varchar,desc varchar,id,active_flag INTEGER DEFAULT 0)");
        db.execSQL("insert into reminder_tb(amount,date,time,desc,id) values('"+AmountString+"','"+DateString+"','"+TimeString+"','"+ DescString+"','"+id+"')");
        Cursor   c = db.rawQuery("SELECT * FROM reminder_tb", null);
        c.moveToFirst();
        if(c.getCount()>0)
         {

            Toast.makeText(getApplicationContext(),"Saved!",Toast.LENGTH_LONG).show();
            Amount.setText("");
            Date.setText("");
            Time.setText("");
            Desc.setText("");

         }
         db.close();
         finish();
}
////-这里是TimeService.java

     public class TimerService extends Service 
                    {
                        String dateString;
                         String timeString;
                         private int year;
                         private int month;
                         private int day;
                         private int hour;
                         private int minute;
                         private String date;
                       // private Cursor c;
                        private  SQLiteDatabase db;
                         // constant
                        public long  NOTIFY_INTERVAL = 1000;
                        // run on another Thread to avoid crash
                        private Handler mHandler = new Handler();
                        // timer handling
                        private Timer mTimer = null;
                        @Override
                        public IBinder onBind(Intent intent)
                        {
                            return null;
                        }
                        @Override
                        public void onCreate() 
                        {
                        // cancel if already existed
                            if (mTimer != null) 
                            {
                                mTimer.cancel();
                            } 
                            else 
                            {
                                // recreate new
                                mTimer = new Timer();
                            }
                            // schedule task
                            mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
                           }
                    class TimeDisplayTimerTask extends TimerTask 
                        {
                           @Override
                            public void run()
                            {
                                // run on another thread
                                mHandler.post(new Runnable() 
                                {
                                   @Override
                                    public void run() 
                                    {
                                        AlarmService();

                                    }

                                });
                            }
                        }
                    private void AlarmService()
                        {
                          //for date
                             final Calendar ca = Calendar.getInstance();
                             year  = ca.get(Calendar.YEAR);
                             month = ca.get(Calendar.MONTH)+1;
                             day   = ca.get(Calendar.DAY_OF_MONTH);
                             date =year+"-"+month+"-"+day;
                             final Calendar c1 = Calendar.getInstance();
                             hour = c1.get(Calendar.HOUR_OF_DAY);
                            minute = c1.get(Calendar.MINUTE);
                              String timeSet = "";
                             if (hour > 12)
                             {
                                 hour -= 12;
                                 timeSet = "PM";
                             } else if (hour == 0)
                             {
                                 hour += 12;
                                 timeSet = "AM";
                             }
                     else if (hour == 12)
                                 timeSet = "PM";
                             else
                                 timeSet = "AM";
                      String minutes = "";
                             if (minute < 10)
                                 minutes = "0" + minute;
                             else
                                 minutes = String.valueOf(minute);
                      String TimeString = new StringBuilder().append(hour).append(':').append(minutes).append(" ").append(timeSet).toString();
                      db = openOrCreateDatabase("xpence", Context.MODE_PRIVATE, null);
                             String tableName="reminder_tb";
                             Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
                             Cursor   c = db.rawQuery("SELECT * FROM reminder_tb",null);
                             c.moveToFirst();
                            if( cursor!=null)
                             {
                                 if(cursor.getCount()>0) 
                                    {
                                      cursor.close();
                                       c = db.rawQuery("SELECT * FROM reminder_tb where date='"+date+"' and time='"+TimeString+"' and active_flag=0" , null);
                                      c.moveToFirst();
                                      if(c.getCount()>0)
                                       {
                                        Toast.makeText(getApplicationContext(), "REMINDER: " + c.getString(3) + "Amount:"+c.getString(0)+" On "+date+","+TimeString, Toast.LENGTH_LONG).show();       
                                        db.execSQL("update reminder_tb SET active_flag=1 WHERE date='"+date+"' and time='"+TimeString+"'");

                                        }
                                    c.close();              
                                 }
                                cursor.close();
                             }
                             db.close();
                         }
                    }
公共类TimerService扩展服务
{
字符串日期字符串;
字符串时间字符串;
私人国际年;
私人整数月;
私人国际日;
私人整数小时;
私人整数分钟;
私有字符串日期;
//专用游标c;
专用数据库数据库;
//不变的
公共长通知间隔=1000;
//在另一个线程上运行以避免崩溃
私有处理程序mHandler=新处理程序();
//计时器处理
专用定时器mTimer=null;
@凌驾
公共IBinder onBind(意向)
{
返回null;
}
@凌驾
public void onCreate()
{
//如果已经存在,则取消
如果(mTimer!=null)
{
mTimer.cancel();
} 
其他的
{
//重新创造新的
mTimer=新计时器();
}
//计划任务
mTimer.scheduleAtFixedRate(新的TimeDisplayTimerTask(),0,通知时间间隔);
}
类TimeDisplayTimerTask扩展了TimerTask
{
@凌驾
公开募捐
{
//在另一个线程上运行
mHandler.post(新Runnable()
{
@凌驾
公开募捐
{
报警服务();
}
});
}
}
私有无效报警服务()
{
//约会
最终日历ca=Calendar.getInstance();
年=ca.get(日历年);
月=ca.get(日历月)+1;
day=ca.get(日历,每月的第天);
日期=年+“-”+月+“-”+日;
最终日历c1=Calendar.getInstance();
小时=c1.get(日历小时);
分钟=c1.get(Calendar.minute);
字符串时间集=”;
如果(小时>12)
{
小时-=12;
timeSet=“PM”;
}否则,如果(小时==0)
{
小时+=12;
timeSet=“AM”;
}
否则,如果(小时==12)
timeSet=“PM”;
其他的
timeSet=“AM”;
字符串分钟数=”;
如果(分钟<10)
分钟=“0”+分钟;
其他的
分钟=字符串.valueOf(分钟);
String TimeString=new StringBuilder().append(小时).append(“:”).append(分钟).append(“”).append(时间集).toString();
db=openOrCreateDatabase(“xpence”,Context.MODE_PRIVATE,null);
String tableName=“提醒\u tb”;
Cursor Cursor=db.rawQuery(“从sqlite_master中选择不同的tbl_名称,其中tbl_名称='”+tableName+“'”,null);
游标c=db.rawQuery(“从提醒中选择*”,null);
c、 moveToFirst();
如果(光标!=null)
{
if(cursor.getCount()>0)
{
cursor.close();
c=db.rawQuery(“从提醒_tb中选择*,其中日期=”“+date+”,时间=”“+TimeString+”,活动_标志=0”,null);
c、 moveToFirst();
如果(c.getCount()>0)
{
Toast.makeText(getApplicationContext(),“提醒:”+c.getString(3)+“金额:”+c.getString(0)+“在”+date+”,“+TimeString,Toast.LENGTH_LONG).show();
db.execSQL(“更新提醒”tb SET active_标志=1,其中日期='“+date+”,时间