2016-06-21 26 views
0

我正在爲餐廳開發POS應用。事情工作正常,除了一段時間後,應用程序變得非常緩慢。響應似乎遲了2秒,然後我們需要重新啓動應用程序。 這裏是如何看起來像:Android:多次操作後應用響應變慢

enter image description here

當食物類別每選擇一次,e.g冷飲,我刪除它下面的以前的食物,並根據所選擇的類別添加新項目。

因此,對我來說,當我頻繁地從面板(GridLayout)添加和刪除視圖時,應用程序變得越來越慢。

我只是做gridLayout.removeAllViews();刪除所有視圖。

誰能告訴我如何解決這個問題嗎?

+0

網格佈局是動態網格/列表一個不錯的選擇......你爲什麼不使用RecyclerView /列表顯示? – Selvin

+0

這聽起來對我來說,每當你填充網格時,你都會添加一個新項目列表來顯示,而不會刪除舊項目。然後,當你不斷添加新的項目集合,這個列表變得非常大,而且你的內存不足。 – NoChinDeluxe

+0

@Selvin yea ..看來我必須用一些回收視圖替換gridLayout然後再試一下。 – usman

回答

0

您正在刪除視圖,但它不需要銷燬,所以它們繼續佔用內存資源。

最好使用適配器的某種列表,如ListView或RecyclerView,以便您可以添加或刪除視圖,並且它們只會在顯示時佔用內存(或顯示更多兩個內容的所有內容)。

你可以這樣做:

ArrayList<String> listItems = new ArrayList<>();   

     listaItems.add(yourString); // call that ever you have to add new itens 

    ArrayAdapter<String> itemsAdapter = 
      new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); 

    ListView listView = (ListView) findViewById(R.id.listView); 
    listView.setAdapter(itemsAdapter); 

,除去做這樣的事情:

listaItems.remove([INDEX]); 
itemsAdapter.notifyDataSetChanged(); 
+0

可以使用listView來將視圖顯示爲網格佈局嗎? – usman

+0

是的,你可以用裏面的任何佈局創建一個自定義的適配器,並在其中填充文本視圖 –