2012-09-26 162 views
-1

我试图等待,直到AsyncTask会从服务器得到结果,所以主要活动将继续,在我的启动画面上我有一些GUI加载进程栏等等。强制关闭AsyncTask

但是当我运行它时,我得到了力量关闭。 这里是我的主要活动代码:

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) 

我认为它有等待的东西。 希望你能帮助。

+1

-1问你不知道问题补充logcat的56个问题 –

+0

是的,请加logcat中之后。 – Danpe

+0

请发布整个代码+日志。我很确定你在那个线程thread.stop得到异常。该功能不再受支持。有更好的方法来实现启动画面。在没有线程的闪屏之后搜索。 –

回答

1

你需要与你打电话的wait()对象同步。在这种情况下,你应该能够说

synchronized(this){ 
    wait(100); 
} 
0

runOnUiThread在UI线程上运行。您无权像通过调用连续等待(100)一样阻止它;

此外,还有在你的代码中没有的AsyncTask ...