2017-03-31 57 views
0

我一直在閱讀關於xml包含標籤,片段在智能手機和平板電腦的佈局上使用,但我得到更多的困惑比得到我的問題的解決方案。Android最佳實踐重用代碼和佈局

我的應用程序有4個屏幕。

1 - 您登錄並從一個JSON

2,3,4下載信息 - 從登錄,活動2的負載(用自定義適配器列表),在那裏你可以點擊2的圖像跳轉到第3次和第4次活動。

我現在需要再次創建活動1,2和3,分析不同的JSON,其中1和2具有相同佈局的現有佈局,3佈局不同。

我爲他們工作的代碼是(或可以)相同的(下載任務與AsyncTask,按鈕點擊監聽器等)我已經有了這些活動。

我認爲,複製基本上相同的getView方法並不是一個有效的實踐,例如,粘貼在一個新的類上,對吧?例如,這些按鈕不適用於第二範圍的屏幕。

那麼,我應該採取什麼方法,不是複製和粘貼代碼,並手動更改東西?

對不起,這個新手問題。

如果需要,我可以提供代碼。

PS 1:我已經做了與測試包括XML和複製代碼,但是,這並不顯得專業

PS 2:只適用於像平板電腦或者我可以做一些與它不同的畫面片段?

回答

1

這幾個問題,所以這裏的幾個答案,其中包括一些非問的問題:

  • 要盡最大的可能,力爭從您的活動,碎片等去除儘可能多的代碼可能如果它與Android生命週期沒有任何關係,或者實際上在屏幕上放置了某些東西(例如解析JSON),那麼將它放在一個「普通的舊Java」類中。另外,通過這種方式,您可以在「活動」中分享功能。

  • 恕我直言,你不應該使用AsyncTask,出於任何原因。它們與Activity或Fragment一起使用,但不尊重片段或Activity生命週期,所以通常會導致崩潰的原因難以診斷。使用與生命週期同步的東西,比如Loader。或者轉到RxJava路線,其中訂戶可以在活動/片段生命週期的適當位置取消。

  • 碎片可以很好地用於代碼重用,但它們與活動的生命週期略有不同,所以它們可能很難合作,所以要謹慎使用它們。如果你只是爲了重用一些UI(但不是行爲),佈局「包含」可能會更好。對於行爲來說,自定義的View類可以成爲碎片的一個很好的選擇。

  • 不要使用像HTTPUrlConnection這樣的基元來自己進行HTTP/REST訪問。有很多角落案件會讓你陷入困境。使用爲此目的而構建的幾個非常好的開源庫之一。我強烈推薦Retrofit。

+0

相反,你可能認爲這不是一個模糊的答案我的朋友。簡單地說,你解決了我腦海中的許多問題。有了你的經驗教訓,我已經可以想到更好的代碼編寫方式了(例如,不再使用HHTPUrlConnection和AsyncTasks)。我很感激,非常感謝。祝你有個愉快的一天xD – BlitzkriegBlue