gpt4 book ai didi

Android:安排应用程序以重复警报开始不起作用

转载 作者:行者123 更新时间:2023-11-29 21:57:48 25 4
gpt4 key购买 nike

我让我的广播接收器设置一个循环警报,以启动一项服务。不幸的是,这不会导致服务被重复调用(基于 logcat)。我也为时间间隔尝试了不同的值。有人可以帮忙吗? (我在 Android 3.2 Motorola xoom 上通过 Eclipse 进行测试)

下面是广播接收器的代码。

    alarm = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
Intent intentUploadService = new Intent (arg0, com.vikramdhunta.UploaderService.class);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 3);

PendingIntent pi = PendingIntent.getBroadcast(arg0, 0, intentUploadService , 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5, pi);

下面是服务类的代码

    public UploaderService()
{
super("UploaderService");
mycounterid = globalcounter++;
}

@Override
protected void onHandleIntent(Intent intent) {
synchronized(this)
{
try
{
for (int i = 1;i < 5;i++)
{
// doesn't do much right now.. but this should appear in logcat
Log.i(TAG,"OK " + globalcounter++ + " uploading..." + System.currentTimeMillis());

}
}
catch(Exception e)
{

}
}
}
@Override
public void onCreate() {
super.onCreate();
Log.d("TAG", "Service created.");
}


@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.i(TAG, "Starting upload service..." + mycounterid);
return super.onStartCommand(intent,flags,startId);
}

最佳答案

好的,看来我得到了这个。需要进行两项更改 -
1 - 我错误地使用了 PendingIntent.getBroadcast 当我需要做 getService 而不是(见鬼,谁知道呢!)
2 - 在 getService 中,我应该在最后提供 PendingIntent.FLAG_UPDATE_CURRENT 而不是 0。FLAG_ONE_SHOT 不起作用。我想因为间隔只有 5 秒,所以这是正确的方法。

现在我得到了每 5 秒调用一次的正确服务/函数。欢呼!

关于Android:安排应用程序以重复警报开始不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com