如果一个Activity需要很长时间才能加载,它要求强制关闭,如何解决?

时间:2012-06-22 05:23:39

标签: android

我的应用程序中的几乎所有活动都需要与Web服务器交互以获取数据,然后加载活动屏幕。所以在任何时候如果互联网速度很慢,需要花费很多时间,经过大约12-15秒,它会说“无法加载,强制关闭/等待”。应用如何避免这种情况?他们遵循的解决方案是什么,当第3-4次活动正常工作时(当网络良好时),然后一些活动需要很长时间(因为互联网不好/如果互联网不见了)

3 个答案:

答案 0 :(得分:4)

通过优化代码,然后在单独的线程(如AsynTask)上进行网络/ Internet工作。

链接:http://developer.android.com/reference/android/os/AsyncTask.html

这不会阻止你的用户界面。

希望这个帮助

答案 1 :(得分:1)

这是一个互联网连接速度慢的问题。我在制作一个用于从Web服务器获取数据的应用程序时也遇到过它。所以有4件事可以帮助你解决这个问题: (1)检查是否有任何互联网连接:

    ConnectivityManager cm = (ConnectivityManager)   getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni!=null && ni.isAvailable() && ni.isConnected()) {
        return true;
    } else {
        return false; 
    }

如果没有互联网连接,您可以通过对话框通知用户。

(2)如果有互联网连接,但速度非常慢,那么你可以放一些代码等待响应一段时间,然后向用户显示一个用于等待或中止请求的对话框。

(3)还有一件非常有用的事情 - 使用slide_in_left和slide_out_right动画样式代替fade_in和fade_out来实现意图之间的转换。它很有帮助,屏幕很少变黑。

     try    {           
        Intent yourIntent = new Intent(view.getContext(), YourActivity.class);      
        startActivityForResult(yourIntent, 0);      
        overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);        
    } catch(Exception ex) {
    }

(4)使用AsyncTask将请求发送到Web。

答案 2 :(得分:0)

您可以在拨打电话之前检查是否存在互联网或数据连接。您还应该能够指定一定的时间来尝试加载文件,然后显示错误或根据需要再试一次。

相关问题