Android activity 在充气机循环过程中停止

Android activity getting halt during loop with inflator

我的代码运行得非常好。但问题是,在我从网络服务收到数据后。当我启动用于创建多行的循环时,我的 Activity 会暂停 5 到 10 秒。服务最多可接收记录数不超过100条

我该如何解决这个问题?在不停止我的 activity 的情况下,它应该会生成多条记录。因为我已经有几条记录要迭代了。

LinearLayout parentLayout = (LinearLayout)findViewById(R.id.sheet);
LayoutInflater layoutInflater = getLayoutInflater();
View view;
JSONArray receivedData = (JSONArray) json.get("RESPONSE_DATA");
for(int i=0; i<receivedData.length(); i++){
    view = layoutInflater.inflate(R.layout.row, parentLayout, false);
    ((TextView)view.findViewById(R.id.title1)).setText( (((JSONObject)receivedData.getJSONObject(i)).get("title1")).toString() );
    ((TextView)view.findViewById(R.id.title2)).setText( (((JSONObject)receivedData.getJSONObject(i)).get("title2")).toString() );
    ToggleButton button = (ToggleButton)view.findViewById(R.id.button);
    button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            View parentView = (View)buttonView.getParent();
            if(isChecked){
                parentView.setBackgroundColor(0x00000000);
            }else{
                parentView.setBackgroundColor(0xffDF9292);
            }
        }
    });
    parentLayout.addView(view);
}

这里是使用适配器的好地方。 有关详细信息,请参阅 Android 开发人员的 this link

您 activity 可能会停止,因为您在 UI 线程上做了太多工作。我还可以想象,由于目前有太多 UI 对象处于活动状态,它会变得迟缓。当您使用带有适配器的列表时,所有这些都会得到解决。

[编辑]

我认为 this tutorial from Vogella 可能是一个更好的起点。

activity 暂停是因为您 运行 您的代码在主 activity 线程上。我建议你使用一些异步的东西,尝试在 AsyncTask 中实现你的代码(但在 onPostExecute 中附加视图)。 另一种方法是添加一个 ListView 并使用自定义 ArrayAdapter 加载数据,this is an example .

希望对你有所帮助