同一个Android应用程序中的Activity和Service

时间:2012-05-07 04:06:28

标签: android service background alarmmanager

我正在开发一个应用程序,用户首先会看到一个带有日期和时间的简单用户界面。用户可以选择每天的时间。然后单击“完成”按钮。现在,这将启动警报服务,以按照选定的时间每天触发。 (并将关闭/打开蓝牙设备)。现在我每天都在使用单独的服务(初学者的直觉)。该应用程序运行正常。现在我想要的是,当用户点击“完成”按钮时,应用程序应该继续在后台运行,当用户再次单击应用程序图标并单击“默认”按钮时,它应该停止所有服务。我怎样才能实现这一目标?每个星期日触发服务的代码如下

time interval of 7 x days for the alarm to repeat every 7 days
     long interval = 1000 * 60 * 60 * 24 * 7; // to make the alarm repeat at every 7 days

//getting values for hours, mins and AM/PM from the spinner boxes for sunday
    index = sunHr.getSelectedItemPosition();
 int sunHrInt  = Integer.parseInt(hrList[index]); 


 index = spinnerSunMin.getSelectedItemPosition();
 int sunMinInt  = Integer.parseInt(minList[index]);

 index = spinnerSunAmPm.getSelectedItemPosition();


   //conversion of time to 24 hrs format
 if (ampmList[index] == "AM") //(convert to 24 hr format)
 {
   if (sunHrInt == 12)   
   {
       sunHrInt = 0;
   }
   else
   {
       if (sunHrInt != 12)
       sunHrInt = sunHrInt + 12;
   }
 }

    //setting current calender
    Calendar cur_cal = new GregorianCalendar();
         cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar
     //setting calender for sunday
      Calendar calSun = new GregorianCalendar();
       calSun.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
       calSun.set(Calendar.HOUR_OF_DAY, sunHrInt);
       calSun.set(Calendar.MINUTE,sunMinInt);
       calSun.set(Calendar.SECOND, 0);
       calSun.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND));
       calSun.set(Calendar.DATE, cur_cal.get(Calendar.DATE));
       calSun.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH));

       //finding out when the sunday is to occur from today  

     days = 8 - calSun.get(Calendar.DAY_OF_WEEK); // how many days until Sunday

       if (days >= 7)
       {
           days = days - 7;
       }

       calSun.add(Calendar.DATE, days);

        //finally triggering the intent
 Intent myIntentSun = new Intent(AndroidAlarmService.this, SunOffAlarmService.class);
           pendingIntentSun = PendingIntent.getService(AndroidAlarmService.this, 0, myIntentSun, 0);
           AlarmManager alarmManagerSun = (AlarmManager)getSystemService(ALARM_SERVICE);
           alarmManagerSun.set(AlarmManager.RTC_WAKEUP, calSun.getTimeInMillis(), pendingIntentSun);

1 个答案:

答案 0 :(得分:-2)

使用偏好设置存储值并尝试使用它。它可能对你有帮助