-1

スプラッシュ AsyncTask がサーバーから結果を取得するまで待機しようとしているため、メインのアクティビティが続行されます。スプラッシュ画面には、ロード プロセス バーなどを含む GUI があります。

しかし、それを実行すると、強制的に閉じられます。これが私の主な活動コードです:

 lv.setOnItemClickListener(new OnItemClickListener() 
 {
     public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
     new Thread() { public void run() 
     {
         runOnUiThread(new Runnable() {
             public void run() {
                 splash  splash=(tools.splash) new splash(first.this).execute();
                 int waited = 0;
                 while(splash.running && (waited< getResources().getInteger(R.integer.splashTimeOut)))
                 {
                     try {
                         wait(100);
                         } catch (InterruptedException e) {
                             // TODO Auto-generated catch block
                             e.printStackTrace();
                         }
                         if(splash.running) {
                             waited += 100;
                         }
                         // nextActivity=splash.newActivity;
                     }
                     Intent intent = null;
                     try {
                         intent = new Intent(first.this,Class.forName("activities.third"));
                     } catch (ClassNotFoundException e) {
                         // TODD Auto-generated catch block
                         e.printStackTrace();
                     }
                     startActivity(intent);
                 }

              });
          }
      }.start();

丸太猫より

 09-26 13:41:26.862: ERROR/AndroidRuntime(487): java.lang.IllegalMonitorStateException: object not locked by thread before wait()
  09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at java.lang.Object.wait(Native Method)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at java.lang.Object.wait(Object.java:395)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at activities.first$1$1$1.run(first.java:54)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at android.os.Handler.handleCallback(Handler.java:587)
09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at android.os.Handler.dispatchMessage(Handler.java:92)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at android.os.Looper.loop(Looper.java:123)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.main(ActivityThread.java:3683)
  09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invokeNative(Native Method)
 09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invoke(Method.java:507)
09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-26 13:41:26.862: ERROR/AndroidRuntime(487):     at dalvik.system.NativeStart.main(Native Method)

私はその何かを待っていると思います。あなたが助けてくれることを願っています。

4

2 に答える 2

1

呼び出しているオブジェクトと同期する必要がありますwait()。この場合、あなたは言うことができるはずです

synchronized(this){
    wait(100);
}
于 2012-09-26T13:53:31.727 に答える