2013-03-16 3 views
0

У меня этот код внутри службы. но планировщик не запускается! Что не так с этим? Я хочу, чтобы этот сервис, чтобы показать тост каждые три секунды, даже если приложение работает в фоновом режиме ...android scheduler не запускается

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(); 
} 

ответ

0

Во-первых, метод onStart(Intent,int) осуждается для объекта обслуживания.

Вы должны вместо этого быть перекрывая

onStartCommand(Intent intent, int flags, int startId), а затем вернуться START_STICKY. Это обеспечит перезагрузку вашего сервиса, если он когда-либо будет убит os.

Во-вторых, вы должны передать контекст службы в сборщик тостов (вы можете использовать ключевое слово this).

Наконец, я не уверен, каковы ваши намерения, но это, скорее всего, всегда будет показывать тост, так как вы его создаете с константой Toast.LENGTH_LONG.

Если он все еще не работает, разместить код, который вы используете, чтобы запустить службу ...

+0

вы знаете, этот код работает, но я что-то изменилось, и теперь не работает! но я не знаю, где это неправильно! – Fcoder

+0

Ну, вы все равно не должны использовать метод onStart() .. он устарел долгое время. Что вы тогда изменили? – Joel

+0

Я не знаю, что я изменил, но мой код работал отлично несколько минут назад ... можете ли вы дать мне полный пример того, что вы говорите? пожалуйста :) – Fcoder

Смежные вопросы