私のアプリケーションでバックグラウンドで実行されるサービスがあります。今私がしたいことは、私のサービスが起動したときに、バックグラウンド操作が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
私を助けてください..この操作ではハンドラの役割についてはわかりません。
ありがとうございました。私はあなたがアクティビティの操作を実行することができないので通知を使用する方法を教えてください。サービスを使用する必要があります.. –