2011-06-17 9 views
0

私のアプリケーションでバックグラウンドで実行されるサービスがあります。今私がしたいことは、私のサービスが起動したときに、バックグラウンド操作がperformed.Myコードされたときに、進行状況ダイアログが表示されますです:Android:サービス操作でハンドラとスレッドを挿入する

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

私は次のエラーを取得しています:

06-18 01:12:16.793: ERROR/AndroidRuntime(737): Uncaught handler: thread main exiting due to uncaught exception 06-18 01:12:16.823: ERROR/AndroidRuntime(737): java.lang.RuntimeException: Unable to create service br.com.ops.service.WarnningService: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2790) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ActivityThread.access$3200(ActivityThread.java:119) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.os.Handler.dispatchMessage(Handler.java:99) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.os.Looper.loop(Looper.java:123) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ActivityThread.main(ActivityThread.java:4363) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at java.lang.reflect.Method.invokeNative(Native Method) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at java.lang.reflect.Method.invoke(Method.java:521) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at dalvik.system.NativeStart.main(Native Method) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.view.ViewRoot.setView(ViewRoot.java:472) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.Dialog.show(Dialog.java:239) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ProgressDialog.show(ProgressDialog.java:107) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ProgressDialog.show(ProgressDialog.java:95) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at br.com.ops.service.WarnningService.onCreate(WarnningService.java:56) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2780) 06-18 01:12:16.823: ERROR/AndroidRuntime(737): ... 10 more

私を助けてください..この操作ではハンドラの役割についてはわかりません。

答えて

0

長期実行タスクの実行中に進行状況ボックスを表示するには、AsyncTaskを使用します。 Googleはこれらに恵まれていますhere

0

サービスではUIを使用できません。 UIのアクティビティを作成するか、代わりに通知を確立します。

+0

ありがとうございました。私はあなたがアクティビティの操作を実行することができないので通知を使用する方法を教えてください。サービスを使用する必要があります.. –

関連する問題