Java Android:在服务操作中插入处理程序和线程

Java Android:在服务操作中插入处理程序和线程,java,android,Java,Android,我的应用程序中有一个在后台运行的服务。现在我想要的是,当我的服务调用时,在执行后台操作时,应该会出现一个进度对话框。我的代码: 我得到以下错误: 06-18 01:12:16.793: 错误/AndroidRuntime737:未捕获 处理程序:由于以下原因而退出主线程 未捕获异常06-18 01:12:16.823: 错误/AndroidRuntime737: java.lang.RuntimeException:无法 创建服务 br.com.ops.service.WarnningServi

我的应用程序中有一个在后台运行的服务。现在我想要的是,当我的服务调用时,在执行后台操作时,应该会出现一个进度对话框。我的代码:

我得到以下错误:

06-18 01:12:16.793: 错误/AndroidRuntime737:未捕获 处理程序:由于以下原因而退出主线程 未捕获异常06-18 01:12:16.823: 错误/AndroidRuntime737: java.lang.RuntimeException:无法 创建服务 br.com.ops.service.WarnningService: android.view.WindowManager$BadTokenException: 无法添加窗口-标记为空 不适用于申请06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ActivityThread.handleCreateServiceActivityThread.java:2790 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ActivityThread.access$3200ActivityThread.java:119 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ActivityThread$H.handleMessageActivityThread.java:1917 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.os.Handler.dispatchMessageHandler.java:99 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.os.Looper.Looper.java:123 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ActivityThread.mainActivityThread.java:4363 06-18 01:12:16.823: 错误/AndroidRuntime737:at java.lang.reflect.Method.Invokenative 方法06-18 01:12:16.823: 错误/AndroidRuntime737:at java.lang.reflect.Method.invokeMethod.java:521 06-18 01:12:16.823: 错误/AndroidRuntime737:at java:860 06-18 01:12:16.823: 错误/AndroidRuntime737:at java:618 06-18 01:12:16.823: 错误/AndroidRuntime737:at dalvik.system.NativeStart.mainNative 方法06-18 01:12:16.823: 错误/AndroidRuntime737:由以下原因引起: android.view.WindowManager$BadTokenException: 无法添加窗口-标记为空 不适用于申请06-18 01:12:16.823: 错误/AndroidRuntime737:at android.view.ViewRoot.SetViewRoot.java:472 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.view.WindowManagerImpl.addViewWindowManagerImpl.java:177 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.view.WindowManagerImpl.addViewWindowManagerImpl.java:91 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.Dialog.showDialog.java:239 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ProgressDialog.showProgressDialog.java:107 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ProgressDialog.showProgressDialog.java:95 06-18 01:12:16.823: 错误/AndroidRuntime737:at br.com.ops.service.WarnningService.onCreateWarningService.java:56 06-18 01:12:16.823: 错误/AndroidRuntime737:at android.app.ActivityThread.handleCreateServiceActivityThread.java:2780 06-18 01:12:16.823: 错误/AndroidRuntime737:。。。10 更多


请帮帮我。。我不确定处理程序在此操作中的角色。

服务无法使用UI。为UI创建活动,或者改为建立通知。

要在执行长时间运行的任务时显示进度框,请使用。谷歌对这些都有很好的理解。

感谢您的快速评论。您能告诉我如何使用通知吗,因为我无法在活动中执行操作..需要使用服务。。
 public class WService extends
        Service implements Runnable {
          private  String TAG_SPV=
        "SPV>service>WService";    private
        ProgressDialog pd;    
          NotificationFactory nf;     Parse
        parse;    DAOSymbol dao;  WSClient
        responseClient;   List<Quote> quotes;
          Map<String, Symbol> symbols;
              private boolean on;

          public IBinder onBind(Intent
        intent) {
                      return null;    }

          @Override   public void onCreate() {
              // TODO Auto-generated method stub
              super.onCreate();
              Log.i(TAG_SPV,"responseTojsonArray");
              parse = new Parse();        dao = new
        DAOSymbol();      quotes = new
        ArrayList<Quote>();       symbols = new
        HashMap<String, Symbol>();


                        startService(new Intent(this,
                      br.com.ops.service.NotificationFactory.class));




                        pd = ProgressDialog.show(this,
        "Downloading..", "Please wait",
        true,
                               false);

                      Thread thread = new Thread(this);       thread.start();     }

          @Override   public void
        onStart(Intent intent, int startId)
        {         on = true;
              super.onStart(intent, startId);
              Log.i(TAG_SPV,"onStart");   }   
          private Handler handler = new
        Handler() {
                @Override
                public void handleMessage(Message msg) {
                        pd.dismiss();


                } };


          @SuppressWarnings("unchecked")
          public void run() {
              Log.i(TAG_SPV,"run");       if (on) {
                  dao.open(getBaseContext());
                   //Perform some DB operations as well as hit web service

                  dao.close();
                  handler.postDelayed(this, 30000);
              }   } }