每当新电子邮件到达收件箱时,我都试图获得通知,代码如下。我的应用程序在短时间后变得无响应,虽然在 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){
}
}
最佳答案
onStart
已弃用。您应该改用onStartCommand
。系统在主 UI 线程上同时调用
onStart
和onStartCommand
。您的应用似乎“无响应”的原因是您在主 UI 线程上调用Thread.sleep(20000)
。主 UI 线程负责生成布局并响应触摸/UI 事件。对Thread.sleep
的调用阻止了所有这一切的发生,因此您的应用程序似乎挂起(最终您会收到“应用程序无响应”错误)。
关于Android 应用程序变得无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715334/