0

IntentService私は、ループで値を生成する に取り組んでいます。オーバーライドされたメソッドonStartCommand()およびonDestroy()では、 を使用してメッセージを表示できますToastToastにも使用したいのですがonHandleIntent()、うまくいきません。値を表示するためのより良い方法 (ファイル、属性など) があることは知っていますが、これらの値が作成されたらすぐに必要です。最終的にではありません(正常に動作している場合の制御のみ)。問題を特定するのを手伝ってくれませんか? 前もって感謝します。

public class HelloIntentService extends IntentService {

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

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
      return super.onStartCommand(intent,flags,startId);
  }

  @Override
  protected void onHandleIntent(Intent intent) {

      long endTime = System.currentTimeMillis() + 5*1000;
      while (System.currentTimeMillis() < endTime) {
          synchronized (this) {
              try {
                  wait(endTime - System.currentTimeMillis());
              } catch (Exception e) {
              }
          }
      }}

  @Override
  public void onDestroy()
  {
      Toast.makeText(this, "Service is being destroyed now.", Toast.LENGTH_SHORT).show();
  }
}
4

1 に答える 1

0

onHandleIntent は、ソース コードごとにバックグラウンドで別のスレッドで実行されるため、UI を更新する機能はありません。Toasts ではなく、logging ステートメントを使用して情報を表示することをお勧めします。

Log.d("HelloIntentService","service starting");
于 2013-02-25T23:20:44.810 に答える