0

我在服务中有这个代码。但调度程序没有启动!这有什么问题?即使应用程序在后台,我希望此服务每三秒显示一次祝酒...

public class notifService extends Service {
private final ScheduledExecutorService scheduler =Executors.newScheduledThreadPool(1);


@Override
public IBinder onBind(Intent arg0) {
    return null;
}

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    final Intent intent1 = new Intent(this, notifService.class);


    scheduler.scheduleWithFixedDelay(new Runnable() {
        @Override
        public void run() {
           Toast.makeText(getApplicationContext(),String.valueOf("a"), Toast.LENGTH_LONG).show();

        }
    }, 3, 3, SECONDS);
}

@Override
public void onDestroy() {
    super.onDestroy();
}
4

1 回答 1

0

首先,onStart(Intent,int)Service 对象不推荐使用该方法。

你应该改写

onStartCommand(Intent intent, int flags, int startId)然后返回 START_STICKY。这将确保您的服务在被操作系统杀死时重新启动。

其次,您应该将服务的上下文传递给 toast 构建器(您可以使用this关键字)。

最后,我不确定您的意图是什么,但这很可能总是显示出祝酒词,因为您正在使用Toast.LENGTH_LONG常量构建它。

如果仍然无法正常工作,请发布您用于启动服务的代码...

于 2013-03-16T19:38:34.353 回答