[英]How to approach two different functionality for android app paid and free version
我有一個免費的Android應用程序,我將添加一些只能通過付費版本才能獲得的功能。 免費的應用程序將數據硬編碼到應用程序中。 通常在strings.xml文件中。 付費版本將從JSON API獲取數據。 比免費應用程序要多得多的數據。 接口將保持不變。 但是單擊某些按鈕時的功能將改變。 我是否需要為每個版本創建兩個MainActivity。 或者,如何通過修改的費用來更改付費版本的功能。 我想這個問題可以歸結為免費和付費版本的軟件設計模式,我正努力弄清楚。 我已經加了
productFlavors {
lite {
applicationId "com.sample.appname.lite"
buildConfigField 'boolean', 'IS_PAID', 'false'
versionCode 1
versionName '1.3-free'
}
pro {
applicationId "com.sample.appname.pro"
buildConfigField 'boolean', 'IS_PAID', 'true'
versionCode 1
versionName '1.0-paid'
}
}
我在src文件夾下創建了一個免費的付費Java文件夾。 但是不知道我是否需要為付費版本創建一個新的MainActivity,為我的免費版本創建另一個。 任何幫助表示贊賞
您可以通過以下方式執行此操作:
InfoRepository
,但您應該對它進行某種InfoRepository
,這要考慮到要加載的數據類型)。 您將有該類的兩個實例:一個在paid
文件夾中,一個在free
文件夾中。 它們都具有getInfo()
方法,該方法返回Info
對象的列表(例如)。
getInfo()
。 (旁注:可能值得考慮將數據放在raw
文件夾中的json文件中,以便無論數據是付費還是免費的,數據加載都是相同的) getInfo()
,對其進行解析並返回最終結果來實現getInfo()
。 MainActivity
(在main
Java文件夾中只有一個實例),創建一個InfoRepository
類實例並調用getInfo()
來填充屏幕。 這將從免費版本的字符串中加載信息,或者在付費版本中使用API。 MainActivity
不在乎數據來自何處,它只是在乎要顯示一些數據。 每種口味中的InfoRepository
類都負責從正確的源中加載它。 一些注意事項:
InfoRepository
。 我不知道您的用例是什么,但是例如,假設您有一個Note
列表,如果用戶單擊“顯示筆記”按鈕,則會顯示該列表;如果有一個Score
,則顯示一個Score
列表。在“顯示分數”按鈕上。 在這種情況下,你可以有兩種方法, getNotes()
和getScores()
的內InfoRepository
。 Deferred
對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.