gpt4 book ai didi

android - 在android中的特定时间后停止后台服务

转载 作者:行者123 更新时间:2023-11-29 21:15:24 26 4
gpt4 key购买 nike

您好,我需要停止在特定时间后已经启动的后台服务。我将从服务器获取停止服务的持续时间。我已经在 android 中尝试了警报管理器。

        Calendar cal = Calendar.getInstance();

Intent intent = new Intent(context, MyService.class);
PendingIntent pintent = PendingIntent.getService(context, 0, intent, 0);

AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
// Start every 30 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 60*1000, pintent);
Log.e(TAG, "Service started in Activity");

上面的代码每隔一分钟启动一次服务。但是我不想启动服务。我需要在一分钟后停止服务。如何做到这一点。是否可以使用警报管理器来完成。请指导我。

最佳答案

试试看:

将参数添加到您的 pendingIntent

Intent intent = new Intent(context, MyService.class);
intent.putExtra("param_name", "end");
PendingIntent pintent = PendingIntent.getService(context, 0, intent, 0);

覆盖 onStartCommand()服务中的方法

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
try{
String parameter = intent.getStringExtra("param_name");
if(parameter.equals("end")){
stopSelf();
}
}catch(Exception ex){
}
}

您也可以尝试使用 Handler在您的服务中:

处理程序变量:

private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1: {
stopSelf();
}break;
}
}
}

延迟任务:

handler.sendEmptyMessageDelayed(1, 60 * 1000);

关于android - 在android中的特定时间后停止后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569769/

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