我需要在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 回答
![?](http://img1.sycdn.imooc.com/54584d9f0001043b02200220-100-100.jpg)
catspeake
TA贡献1111条经验 获得超0个赞
覆盖onStartCommand 服务并返回START_NOT_STICKY 它不会重新启动
public void onStartCommand()
{
return START_NOT_STICKY
}
和使用stopSelf()insted的的stopService(new Intent(getContext(), MyService.class));
![?](http://img1.sycdn.imooc.com/545861b80001d27c02200220-100-100.jpg)
皈依舞
TA贡献1851条经验 获得超3个赞
应用关闭后,您的服务将无法运行,请阅读后台限制。这实际上不是Service
用例。
解决方案可能是您的问题是AlarmManager。将警报设置为精确到2分钟后,接收器将在触发时被调用。使用前请AlarmManger
阅读setExactAndAllowWhileIdle()
和setExact()
。
或者,您也可以使用WorkManager
设置精确作业。但是,如果您不需要,这将是一个过大的杀伤力Job Constraints
。因此,如果您的工作不取决于网络连接之类的任何约束或其他约束,则可以使用AlarmManger
。
PS:-如果您的任务取决于网络连接,则应选择WorkManager
。使用WorkManager阅读计划任务。
添加回答
举报
0/150
提交
取消