为了账号安全,请及时绑定邮箱和手机立即绑定

后台2分钟后如何调用方法

后台2分钟后如何调用方法

DIEA 2021-04-12 17:23:16
我需要在2分钟后调用一个方法。我已经尝试过处理程序和计时器,但是当应用程序关闭时它不起作用。然后我有呼叫计时器在服务中,单击按钮即可启动服务,并在2分钟后停止服务。它可以工作,但问题是服务有时会自行调用。下面是我的代码。MyService类别public class MyService extends Service {private static Retrofit retrofit = null;@Overridepublic IBinder onBind(Intent intent) {    throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic void onCreate() {    new CountDownTimer(120000, 1000) {        public void onTick(long millisUntilFinished) {            Log.d("message", "start");        }        public void onFinish() {            Log.d("message", "finish");            callMyMethod();            stopService(new Intent(MyService.this, MainActivity.class));        }    }.start();}我从那里开始服务的MainActivity类。stopService(new Intent(getContext(), MyService.class));startService(new Intent(getContext(), MyService.class));显现<service android:name="MyService" android:enabled="true" android:exported="true"/>注意:我只想按一下按钮即可致电服务,并在2分钟后停止服务。请寻求帮助以解决此问题,或者如果除服务之外还有其他好的解决方案。
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

覆盖onStartCommand 服务并返回START_NOT_STICKY 它不会重新启动


public void onStartCommand()

{

     return START_NOT_STICKY

}

和使用stopSelf()insted的的stopService(new Intent(getContext(), MyService.class));


查看完整回答
反对 回复 2021-04-28
?
皈依舞

TA贡献1851条经验 获得超3个赞

应用关闭后,您的服务将无法运行,请阅读后台限制。这实际上不是Service用例。

解决方案可能是您的问题是AlarmManager。将警报设置为精确到2分钟后,接收器将在触发时被调用。使用前请AlarmManger阅读setExactAndAllowWhileIdle()setExact()

或者,您也可以使用WorkManager设置精确作业。但是,如果您不需要,这将是一个过大的杀伤力Job Constraints。因此,如果您的工作不取决于网络连接之类的任何约束或其他约束,则可以使用AlarmManger

PS:-如果您的任务取决于网络连接,则应选择WorkManager。使用WorkManager阅读计划任务。


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信