Tôi đang cố gắng sử dụng lớp học AsyncTask
để nhận nội dung của trang web. Các logcat nói với tôi W/art: Suspending all threads took: 15(or any other number)ms
nhiều lần. Ứng dụng của tôi bị đóng băng cho đến khi thông báo tường trình được in xong. Giao diện người dùng hiển thị sau khi nhật ký được thực hiện. Tôi đã làm theo một hướng dẫn và đã kiểm tra kỹ xem mã của tôi có giống với hướng dẫn hay không. Sau một thời gian, nó ghi lại một vài dòng mã từ trang web, nhưng không có gì hơn. Tôi đã thử với các trang web khác nhau. Dưới đây là AsyncTask tôi:Ứng dụng bị treo và treo tất cả các chủ đề khi sử dụng AsyncTask
public class MainActivity extends AppCompatActivity {
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DownloadTask task = new DownloadTask();
String result = null;
try {
result = task.execute("http://www.vg.no/").get();
Log.i("URL content" , result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
này cố định đóng băng ứng dụng, nhưng tôi vẫn nhận được tất cả các: "W/nghệ thuật: Đình chỉ tất cả các chủ đề mất: 9.850ms "thư trong nhật ký. Tôi cũng nhận được điều này: "Tôi/nghệ thuật: Nền một phần đồng thời quét GC giải phóng 58 (2048B) đối tượng AllocSpace, 45 (16MB) LOS đối tượng, 40% miễn phí, 21MB/36MB, tạm dừng 7.230ms tổng 23.895ms" –
@ EmilØgård các loại tin nhắn là phổ biến cho tất cả các ứng dụng và bạn không nên quan tâm. Chúng chỉ đơn giản là một phần của việc ghi nhật ký khung công tác của Android và được sử dụng để chẩn đoán các vấn đề quản lý bộ nhớ và các vấn đề gỡ lỗi. Trong hầu hết các ứng dụng, chúng có thể được bỏ qua một cách an toàn (và bạn không thể loại bỏ chúng). – adelphus
Cụ thể hơn, điều "quét GC đánh dấu" là báo cáo những gì các nhà sưu tập rác đang làm để đòi lại bộ nhớ. Các "đình chỉ tất cả các chủ đề" tin nhắn là bởi vì tất cả các chủ đề phải được đình chỉ khi thu gom rác làm công việc của mình. Việc quét đặc biệt này mất khoảng 24 phần nghìn giây, hoặc khoảng một phần mười của một chớp mắt. ;-) – nasch