为什么我的服务没有运行?(通过显示Toast消息来判断。)

Qas*_*sim 2 service android toast

我正在尝试在后台创建一项服务,以便我可以运行一个循环,每 x 分钟请求一个页面。这是清单中我的服务:

<service android:name=".webToSMS" android:enabled="true" />
Run Code Online (Sandbox Code Playgroud)

这是我正在启动的服务(在主要活动中):

Intent intent = new Intent(this, webToSMS.class);
startService(intent);
Run Code Online (Sandbox Code Playgroud)

最后,这是我的服务类别:

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();
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在遵循 Android 的指南,这就是它告诉我要做的事情。我期待的是弹出一个祝酒词“Hello toast!” 当该服务运行时。最终,当这个工作正常时,我将放置一个循环,每 x 分钟请求一个页面。

Idi*_*tic 5

您的服务正在运行,只是没有显示 toast,因为您不在 UI 线程上。

如果你想看吐司试试这个

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")); 
}
Run Code Online (Sandbox Code Playgroud)