1

アプリケーションでスレッドを処理していますが、スレッド待機機能の問題に直面しています。を使用して UI を作成して表示しましたrunOnUIThread()。メイン スレッドは UI スレッドが終了するのを待っていました。スレッドが終了した後、メイン スレッドでいくつかのプロセスを実行しました。私はこれのために待機とnotify()機能を使用しています

      public String LSVerification() {

        String t = null;

            t="Sample string";
            synchronized(this)

            {
            AndroidHTMLActivity.this.runOnUiThread(ShowDialog) ;//here i call my thread

            try {
               this.wait();//here i waiting for my thread to finish it's job

            //here i do some process after my thread finish it's job
              //the problem is here main process always in wait state


                } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            }
          return t;        
        }

        private Runnable ShowDialog = new Runnable() {
            public void run() {
                String t = null;
        synchronized(ShowDialog)

            {
            Recognition recg=new Recognition(Activity.this);

                recg.show();


            this.notify();
            }

            }
        };
4

1 に答える 1

1

バックグラウンドでジョブを実行した後、Hanlders を使用して UI を更新しようとします...

ハンドラーへのリンク以下のコードを参照してください。

private void performOperationInBackgroundThread() {
        Thread Servicethread = new Thread(
                    new Runnable() {
                        public void run() {
                            try {
                                PerformThreadOperation();
                                DataLoaded = true;
                            } catch (Exception e) {
                                ExceptionOccured = true;
                                e.printStackTrace();
                                System.out.println(e.getMessage());
                            }
                            handler.sendMessage(handler.obtainMessage());
                        }
                    }
                    );
            Servicethread.start();
        }


 static class MyHandler extends Handler{
                MyActiviy parentActivity;
                @Override
                public void handleMessage(Message msg){
                    // Update your UI here

                    }
                }

                MyHandler(MyActiviy activity){
                    parentActivity = activity;
                }
            }

MyHandler handler = new MyHandler(this);
于 2012-11-30T10:55:58.517 に答える