Android应用程序变得无法响应

时间:2012-07-30 04:15:27

标签: android javamail android-service

我正在尝试在新邮件到达收件箱时收到通知,代码如下。我的应用程序在短时间内变得反应迟钝,虽然在logCat应用程序仍在与imap服务器进行通信....但是android系统要求我等待或关闭此应用程序。这是因为“thread.sleep()”吗?我该如何解决?

任何人都可以指导我吗? :/

@Override

public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onStart");
    //player.start();
    //add listenser and keep listening
    try{
        folder.addMessageCountListener(new MessageCountAdapter() {//start
            public void messagesAdded(MessageCountEvent ev) {
                Message[] msgs = ev.getMessages();
                // msgs.length

                Log.d(TAG, "It is inside LISTENER");

            }
            });//end    
         for (; ;) {
                Thread.sleep(20000); // sleep for freq milliseconds

                // This is to force the IMAP server to send us
                // EXISTS notifications. 
                Log.d(TAG, "AFTER SLEEP");
                folder.getMessageCount();
                }
    }
    catch(Exception e){

    }

}

1 个答案:

答案 0 :(得分:2)

  1. onStart已弃用。您应该使用onStartCommand代替。

  2. 系统调用主UI线程上的onStartonStartCommand 。您的应用看起来“反应迟钝”的原因是您在主UI线程上调用Thread.sleep(20000)。主UI线程负责生成布局并响应触摸/ UI事件。对Thread.sleep的调用阻止了所有这一切发生,因此您的应用程序似乎挂起(并最终导致应用程序无响应错误)。