Android 应用程序变得无响应

标签 android jakarta-mail 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. onStart 已弃用。您应该改用 onStartCommand

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

关于Android 应用程序变得无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715334/

相关文章:

android - Android 中的 Mockito 错误 : java. lang.ClassNotFoundException : android. os.Parcelable

java - 尝试在 tomcat 6.0.14 服务器中发送邮件时抛出异常

Java Mail API读取邮件正文问题

android - 如何在运行 Android 前台服务时报告 Activity 用户的 session

java - 1 项家长服务和 2 项 child 服务

android - 跨 native iOS、Android 和 Windows Phone 应用程序的通用代码库

android - 如何让 Activity 始终在后台运行

Java Mail未连接异常,但电子邮件已发出

android - AlarmManager RTC_WAKEUP 耗尽电池

android - 如何在 Eclipse IDE 中导入 SQLite 数据库