我正在尝试在新邮件到达收件箱时收到通知,代码如下。我的应用程序在短时间内变得反应迟钝,虽然在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){
}
}
答案 0 :(得分:2)
onStart
已弃用。您应该使用onStartCommand
代替。
系统调用主UI线程上的onStart
和onStartCommand
。您的应用看起来“反应迟钝”的原因是您在主UI线程上调用Thread.sleep(20000)
。主UI线程负责生成布局并响应触摸/ UI事件。对Thread.sleep
的调用阻止了所有这一切发生,因此您的应用程序似乎挂起(并最终导致应用程序无响应错误)。