在MVP你不使用Context
或任何從Android SDK /框架否則在Presenter
(P)層!該層用於與Android相關的任何內容。
1)如何訪問演示者內部的共享喜好。
你不知道。如果您需要SharedPrefences
中Presenter
的值,則可以通過方法調用將值傳遞給Presenter
。
實施例:
class MainActivity{
String birthday = SharedPrefence.getString(..);
presenter.setSavedBirtday(birthday);
}
2)如何訪問內部呈現其它系統服務。
如前所述;您不訪問Presenter
中的系統服務。 您可以從演示者調用系統服務。
實施例採用振動器:
1 - 創建的接口:
interface OnSystemServiceCaller{
onVibratorCall();
}
2 - 在一個活動
class MainActivity implements OnSystemServiceCaller{
@Override
onVibratorCall(){
Vibrator v = (Vibrator) getSystemService(VIBRATOR);
v.vibrate(50);
}
}
3實現它 - 從演示呼叫
class Presenter{
OnSystemServiceCaller listener;
public void ifButtonClicked(){
listener.onVibrateCall();
}
}
3)如果我正在使用SQLite數據庫,那麼在我的數據庫中的任何事務期間,通過從演示者調用我的SQLite Helper類需要上下文來訪問數據庫。
有些不喜歡這個回答其他意願,這只是一個建議。
您可以SQLite
如果您的應用類使用全局ApplicationContext()
(類擴展應用程序訪問,因爲你的SQLlite see how here是全球性的整個應用程序,而不是某一特定活動而當你需要從SQLite的數據傳遞到一個Activity
那麼你首先將它傳遞給Presenter
和Presenter
您Activity
以同樣的方式,我們將來電轉到我們的振動器方法
@saksham全球範圍內,請參閱:https://stackoverflow.com/a/9445685/ 5366495. 從更新數據庫的路徑讓我們可以說你從'Edittext'得到的值可以是這樣的:'Edittext.gettext() - >將文本傳遞給演示者 - >從演示者 - >到您的數據庫層。我也會建議看一下'RealmDatabases',它可以幫助你解決大部分問題,並且讓所有東西都變得更加貼心! – Muddz
我知道如何在領域數據庫上工作。我已經完成了領域的項目,因爲領域不需要上下文,所以它很容易與MVP實現,但我的項目之一是完全基於sql精簡版,所以我需要的解決方案 – saksham
是安全的將ApplicationContext()存儲在靜態字段? – saksham