2014-06-21 16 views
0

我想每10秒钟后调用一次方法。我的方法有线程。应用程序崩溃与此code.kindly建议我任何解决方案如何处理运行线程的定时器

 Timer myTimer = new Timer(); 
     MyTimerTask myTimerTask = new MyTimerTask(); 

     // to start 
     myTimer.scheduleAtFixedRate(myTimerTask, 8000, 15000); // (timertask,delay,period) 

现在MyTimerTask活动类。

private class MyTimerTask extends TimerTask { 
    @Override 
    public void run() { 
     CheckMsgs(); 
    } 
} 

和Checkmethod包含

private void CheckMsgs() { 
    showProgressDialog(); 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      msgList = DManager.getConversation(SenderID, reciverID, Url_Settings.conversation_Url); 
      // Log.d("TAG", "msglist" + msgList.size()); 
      mHandler.post(new Runnable() { 
       public void run() { 
        cancelDialog(); 
        if (msgList != null) { 
         Collections.reverse(msgList); 
         adapter = new MsgsAdatper(ConversationActivity.this, msgList); 
         listview.setAdapter(adapter); 
         if (msgList.size() > 5) { 
          listview.setSelection(msgList.size() - 1); 
         } 
         cancelDialog(); 
        } else { 
         Toast.makeText(getApplicationContext(), "No record is found", Toast.LENGTH_LONG).show(); 

        } 
       } 
      }); 

     } 
    }).start(); 
} 

日志

06-21 18:15:03.993: E/AndroidRuntime(24733): FATAL EXCEPTION: Timer-0 
06-21 18:15:03.993: E/AndroidRuntime(24733): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
06-21 18:15:03.993: E/AndroidRuntime(24733): at android.os.Handler.<init>(Handler.java:121) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at android.app.Dialog.<init>(Dialog.java:114) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at android.app.AlertDialog.<init>(AlertDialog.java:114) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at android.app.AlertDialog.<init>(AlertDialog.java:98) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at android.app.ProgressDialog.<init>(ProgressDialog.java:77) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at com.eAlimTech.nikahapp.ConversationActivity.showProgressDialog(ConversationActivity.java:483) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at com.eAlimTech.nikahapp.ConversationActivity.CheckMsgs(ConversationActivity.java:248) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at com.eAlimTech.nikahapp.ConversationActivity.access$9(ConversationActivity.java:247) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at com.eAlimTech.nikahapp.ConversationActivity$MyTimerTask.run(ConversationActivity.java:641) 
06-21 18:15:03.993: E/AndroidRuntime(24733): at java.util.Timer$TimerImpl.run(Timer.java:284) 
+1

张贴您的日志猫 –

+0

@shylendra现在我已经编辑日志猫 –

回答

0

我认为您的变量定义mHandler线程没有Looper里面。在UI线程中重新定义它将有助于我的想法。

相关问题