Почему мой сервис не работает? (Судя по отображению сообщения Тост.) - PullRequest
2 голосов
/ 26 июля 2011

Я пытаюсь создать службу в фоновом режиме, чтобы я мог запустить цикл, который запрашивает страницу каждые x минут. Это мой сервис в манифесте:

<service android:name=".webToSMS" android:enabled="true" />

И вот моя служба запускается (в основной деятельности):

Intent intent = new Intent(this, webToSMS.class);
startService(intent);

И, наконец, это мой класс обслуживания:

public class webToSMS extends IntentService {

  public webToSMS() {
      super("webToSMS");
  }

  @Override
  protected void onHandleIntent(Intent intent) {
      Context context = getApplicationContext();
      CharSequence text = "Hello toast!";
      int duration = Toast.LENGTH_SHORT;

      Toast toast = Toast.makeText(context, text, duration);
      toast.show();
  }
}

Я следовал руководству на Android, и это то, что он сказал мне делать. То, что я ожидаю, это всплывающий тост с надписью "Здравствуй, тост!" когда этот сервис запущен. В конце концов, когда это сработает, я добавлю цикл, который будет запрашивать страницу каждые x минут.

1 Ответ

4 голосов
/ 26 июля 2011

Ваш сервис работает, он просто не отображает тост, потому что вы не в потоке пользовательского интерфейса.

Если вы хотите увидеть тост, попробуйте вместо этого

Handler HN = new Handler(); 


private class DisplayToast implements Runnable {

  String TM = "";

      public DisplayToast(String toast){
          TM = toast; 
      }

      public void run(){
         Toast.makeText(getApplicationContext(), TM, Toast.LENGTH_SHORT).show();
      }
}

@Override
protected void onHandleIntent(Intent intent) {

   HN.post(new DisplayToast("New Toast on UI Thread")); 
}
...