Я пытаюсь получить содержимое этот URL-адрес. Содержание будет изменяться при каждом обновлении.
Я написал свой код для извлечения контента и отображения его в моем приложении с помощью TextView одним нажатием кнопки.
Но для получения данных и отображения в Textview требуется больше времени (минимум 2 секунды, максимум 6 секунд). Итак, какие изменения мне нужны в моем коде, чтобы сделать это efficiant и уменьшить задержку.
(Извлечение сделано в получить данные() метод с использованием URLConnection метод)
public class MainActivity extends AppCompatActivity {
TextView resultView;
String TAG="MainActivity kbt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.enableDefaults();
resultView = (TextView) findViewById(R.id.result);
try {
getData();
} catch (IOException e) {
e.printStackTrace();
}
Button insert=(Button) findViewById(R.id.button);
insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
try {
getData();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public void getData() throws IOException {
String result = "";
InputStream isr = null;
URLConnection urlConnection = null;
URL url = new URL("http://kbtganesh.16mb.com/index.php");
urlConnection = url.openConnection();
isr =urlConnection.getInputStream();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(isr));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try {
resultView.setText(result);
}
catch(Exception e) {
Log.e("log_tag", "Couldn't set text, damnit.");
}
}
}
Заранее спасибо (:
Попробуйте проверить его на локальном сервере на вашем компьютере, а не на удаленном, как у вас. Иногда это просто медленная скорость интернета, замедляющая страницу, и не имеет ничего общего с кодом.
Удалить StrictMode.enableDefaults();
вместо этого используйте AsyncTask для извлечения данных из сети, как говорит доктор
«Хранение дисковых и сетевых операций вне основного потока делает приложения более плавными и быстрыми»
проверьте документ здесь StrictMode Doce
В противном случае все выглядит хорошо, вы также можете проверить улучшение на конце веб-сервиса, проверить запрос, который можно оптимизировать, так как данных вашего API очень мало.