2015-08-09 106 views
1

我想创建一个闹钟应用程序,当您设置时间时,闹钟应用程序会发出警报。我已经部分工作了。通过最近的托盘关闭应用程序后,我卡在未设置的闹钟中(不是强制停止)。为了解决这个问题,我创建了一个将在后台运行的服务(即使应用程序已关闭),并会发出警报。关闭应用程序后,服务不会启动报警

我现在的问题是,即使使用服务后,我无法在应用程序关闭后响起警报。然而,该服务似乎在应用程序关闭后运行(我在运行应用程序中看到过,它说我的应用程序有一个在后台运行的服务)。

注意:我还将服务与我的活动绑定,以便我可以使用它的方法。

注意2:服务在应用程序打开时会发出警报,只有在应用程序关闭时才会发出警报。

这是我的代码:

调用从我的活动服务:

public void startOnClick(View view) { 

     int aHour = alarmTimePicker.getCurrentHour(); 
     int aMin = alarmTimePicker.getCurrentMinute(); 
     Alarms alarm = new Alarms(aHour, aMin); //I've created an Alarms class Seperately 
     myService.setAlarm2(alarm); //Setting the alarm via service 
     Toast.makeText(this, "Alarm SET.", Toast.LENGTH_LONG).show(); 
} 

在为MyService:`包com.wars.tap.tapwars;

公共类的MyService延伸服务{

private final IBinder myBinder = new MyBinder(); 

Alarms alarm = new Alarms(); 
private PendingIntent pendingIntent; 
private AlarmManager alarmManager; 
private ServiceCallBacks serviceCallbacks; 


public MyService() { 
} 

@Override 
public IBinder onBind(Intent intent) { 
    return myBinder; 
} 

public class MyBinder extends Binder { 
    MyService getService() { 
     return MyService.this; 
    } 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
} 

public void setCallbacks(ServiceCallBacks callbacks) { 
    serviceCallbacks = callbacks; 
} 


public void setAlarm2(final Alarms alarm){ 

    Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Calendar calendar = Calendar.getInstance(); 
       calendar.set(Calendar.HOUR_OF_DAY, alarm.get_hour()); 
       calendar.set(Calendar.MINUTE, alarm.get_min()); 

       AlarmManager AM = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
       Intent i = new Intent(MyService.this, AlarmReceiver.class); 
       i.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); 
       pendingIntent = PendingIntent.getBroadcast(MyService.this, 934, i, PendingIntent.FLAG_UPDATE_CURRENT); 
       AM.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 


      } catch (Exception e) { 
      } 
     } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
} 
} 

`

所以,setAlarm2是我使用的服务发出警报的方法。它在应用程序打开时工作,但在应用程序关闭时无法工作。正如你所看到的,这是我在StackOverflow上的第一篇文章,也是我对android编程的新手。我一直坚持这个很长一段时间,并会感谢一些帮助。谢谢。

回答

0

您的闹钟可能正在工作,但通知中心不知道允许您的应用程序有任何权限来突出显示发生的事件。有关通知的详细信息,请查看此链接here

编辑

退房下面的代码我从以前的项目中提取。我遗漏了必要的部分:

public class MyClass extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_NOT_STICKY; 
    } 
    @Override 
    public void onDestroy() { 
    super.onDestroy(); 
    } 
    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
    return null; 
    } 
    public void onTaskRemoved(Intent rootIntent) { 
    // Input your code here prior to exit. 
    stopSelf(); 
    } 
} 
+0

我已经有一个AlarmService类来发送和管理通知。它在AlarmReceiver类中调用。 –

+0

现在暂时停留了一段时间。任何帮助? –

+0

嗨@ S.A.Nik我有同样的问题你有没有找到任何解决方案? –

相关问题