我的应用程序中的几乎所有活动都需要与 Web 服务器交互以获取数据,然后加载活动屏幕。所以在任何时候,如果互联网很慢,它会花费很多时间,大约 12-15 秒后它会显示“无法加载,强制关闭/等待”。应用程序如何避免这种情况?他们遵循的解决方案是什么,当第一个 3-4 活动正常工作时(当网络良好时),那么一些活动需要很长时间(因为互联网不好/如果互联网消失了)
问问题
2417 次
3 回答
4
通过优化您的代码,其次让您的网络/Internet 在单独的线程(如 AsynTask)上工作。
链接:http: //developer.android.com/reference/android/os/AsyncTask.html
这不会阻止您的用户界面。
希望这有帮助
于 2012-06-22T05:26:45.137 回答
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。
于 2012-06-22T05:55:28.293 回答
0
您可以在拨打电话之前检查是否有现有的互联网或数据连接。您还应该能够指定一定的时间长度来尝试加载文件,然后显示错误或根据需要重试。
于 2012-06-22T05:28:10.813 回答