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

我需要在2分钟后调用一个方法。我已经尝试过处理程序和计时器,但是当应用程序关闭时它不起作用。然后我有呼叫计时器在服务中,单击按钮即可启动服务,并在2分钟后停止服务。它可以工作,但问题是服务有时会自行调用。下面是我的代码。


MyService类别


public class MyService extends Service {


private static Retrofit retrofit = null;


@Override

public IBinder onBind(Intent intent) {

    throw new UnsupportedOperationException("Not yet implemented");

}


@Override

public 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分钟后停止服务。请寻求帮助以解决此问题,或者如果除服务之外还有其他好的解决方案。


DIEA
浏览 138回答 2
2回答

catspeake

覆盖onStartCommand 服务并返回START_NOT_STICKY 它不会重新启动public void onStartCommand(){&nbsp; &nbsp; &nbsp;return START_NOT_STICKY}和使用stopSelf()insted的的stopService(new Intent(getContext(), MyService.class));

皈依舞

应用关闭后,您的服务将无法运行,请阅读后台限制。这实际上不是Service用例。解决方案可能是您的问题是AlarmManager。将警报设置为精确到2分钟后,接收器将在触发时被调用。使用前请AlarmManger阅读setExactAndAllowWhileIdle()和setExact()。或者,您也可以使用WorkManager设置精确作业。但是,如果您不需要,这将是一个过大的杀伤力Job Constraints。因此,如果您的工作不取决于网络连接之类的任何约束或其他约束,则可以使用AlarmManger。PS:-如果您的任务取决于网络连接,则应选择WorkManager。使用WorkManager阅读计划任务。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java