在我的代码中,我有一个带有按钮的活动,该按钮使用 viewpager 调用另一个活动,其中包含三个片段。
//...
ViewPager pager = (ViewPager) findViewById(R.id.pager);
ViewPagerAdapter adapterViewPager = new ViewPagerAdapter(getSupportFragmentManager());
adapterViewPager.addFragment(new FragmentOne());
adapterViewPager.addFragment(new FragmentTwo());
adapterViewPager.addFragment(new FragmentThree());
pager.setOffscreenPageLimit(4);
pager.setAdapter(adapterViewPager);
//..
在页面/片段上,有一个从互联网加载数据(图像和文本)的列表视图,使用 AsyncTask 加载此数据
public class FragmentOne extends Fragment{
//...
public class loadEntries extends AsyncTask<String, Void, String>{
//...
public String doInBackground(String... urls){
String url = urls[0];
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return xml;
}
public void onPostExecute(String xml){
try{
entrieList = new ArrayList<HashMap<String, String>>();
Document doc = getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_ENTRIE);
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put(KEY_ID_ENTRIE, getValue(e, KEY_ID_ENTRIE));
map.put(KEY_IMAGE_ENTRIE,getValue(e, KEY_IMAGE_ENTRIE));
map.put(KEY_TEXT_ENTRIE, getValue(e, KEY_TEXT_ENTRIE));
entrieList.add(map);
}
theListViewAdapter();
} catch (Exception e) {
// Exception
}
}
}
//...
在我用来加快 ViewHolder 进程的每个 ListView 适配器中:
//...
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.row_gallery_web, null);
holder = new ViewHolder();
holder.text_one = (TextView)vi.findViewById(R.id.titleImageItemGalleryWeb);
holder.image_row=(ImageView)vi.findViewById(R.id.imageItemGalleryWeb);
HashMap<String, String> items = new HashMap<String, String>();
items = data.get(position);
try {
String textentrie = new String(items.get(FRG_gallery_web.KEY_TITLE_IMAGE).getBytes("ISO-8859-1"));
holder.text_one.setText(android.text.Html.fromHtml(textentrie));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();}
imageLoader.DisplayImage(items.get(FRG_gallery_web.KEY_URL_IMAGE), holder.image_row);
return vi;
}
这是我的问题:
当我按下调用包含 viewpager 的活动的按钮时,加载片段时一切都冻结了。后台进程工作正常,因为我可以正确读取日志。为了更好地解释它,如果我按下调用包含 viewpager 的活动的按钮,在屏幕上显示一个进度条,这也会冻结。
除了每个片段的主体之外,我正在其他线程中从互联网加载数据。
充电时死机是什么原因?
我很感激任何帮助。
谢谢你。问候