待定意向服务 [英] Pending intent get service

查看:77
本文介绍了待定意向服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在启动 pendingIntent 时遇到问题.我已经使用logcat等进行了一些故障排除,最后我几乎肯定我的问题实际上出在我的 pendingIntent 方法中.我设置的时间是正确的,并且该方法被调用,但是在计划的时间没有任何反应.这是我用来创建 pendingIntent

I am having a problem getting my pendingIntent to fire. I have done some troubleshooting using the logcat etc. and in the end I am almost positive that my problem is actually in my pendingIntent method. The times I have set are correct, and the method is getting called, but nothing happens at the scheduled times. Here is the method that I use to create the pendingIntent

public void scheduleAlarm(){
    Log.d("Alarm scheduler","Alarm is being scheduled");
    Intent changeVol = new Intent();
    changeVol.setClass(this, VolumeService.class);
    PendingIntent sender = PendingIntent.getService(this, 0, changeVol, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, time, sender);
    //Toast.makeText(this, "Volume Adjusted!", Toast.LENGTH_LONG).show();
}

这是服务类别:

public class VolumeService extends Service{

@Override
public void onCreate() {
    super.onCreate();
    Log.d("Service", "Service has been called.");
    Toast.makeText(getApplicationContext(), "Service Called!", Toast.LENGTH_LONG).show();
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

}

scheduleAlarm()类中的日志按我的计划工作,但是什么也没发生,所以我认为它是我的 pendingIntent .预先感谢!

The log in the scheduleAlarm() class is working as I planned but then nothing happens, so I assume it is my pendingIntent. Thanks in advance!

推荐答案

想通了!问题出在Service类中,我也改变了其他一些东西.但是,我认为主要的问题是在服务类的 onCreate 方法中,我试图运行代码.但这需要在 onStartCommand 方法

Figured it out! The problem was in the Service class, I changed a few other things around too. However, I believe the main problem was that in my service class in the onCreate method I was trying to run my code. But this needed to be done in the onStartCommand method

public class VolumeService extends Service{

@Override
public void onCreate() {
    super.onCreate();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(getApplicationContext(), "Service started", Toast.LENGTH_LONG).show();
    return START_NOT_STICKY;
 }


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

}

并在启动服务的类中进行了一些更改,如下所示:

and a few changes were made in the class starting the service as seen here:

    public void scheduleAlarm(){
    Log.d("Alarm scheduler","Alarm is being scheduled");
    Intent intent = new Intent(AlarmSettings.this, VolumeService.class);
    PendingIntent pintent = PendingIntent.getService(AlarmSettings.this, 0, intent, 0);
    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.RTC_WAKEUP, time, pintent);
}

这篇关于待定意向服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆