[英]How can I call function 1 time only with Android service?
請仔細閱讀,因為它有點復雜!
我有一項服務,每5秒調用許多功能。 現在我只想在這些函數中調用一個特定功能一次。 因此,我要檢查該函數是否已調用過。
private void checkFirstLaunchApp() {
final String HAS_RUN_BEFORE = "hasRunBefore";
final String HAS_RUN = "hasRun";
SharedPreferences runCheck = getSharedPreferences(HAS_RUN_BEFORE, 0);
Boolean hasRun = runCheck.getBoolean(HAS_RUN, false);
if (!hasRun) {
SharedPreferences settings = getSharedPreferences(HAS_RUN_BEFORE, 0);
SharedPreferences.Editor edit = settings.edit();
edit.putBoolean(HAS_RUN, true); //set to has run
edit.apply(); //apply
//do that function
functionIWant();
}
} else {
//do nothing
}
}
但是問題是,如果我關閉我的應用程序並重新打開它,該函數將不再被調用。 我想要的是當我重新打開我的應用程序時,該函數將再次調用1次。請告訴我該怎么做?
使用全局變量代替SharedPreferences
用onResume方法處理
您必須在啟動器活動的onStart()
HAS_RUN
重置為false。
備用 Extend Application類並創建全局變量:
public class MyApplication extends Application{
public boolean hasRun;
public void onCreate (){
hasRun=false;
}
}
獲取MyApplication的實例
MyApplication app=(MyApplication)getApplication();
if(!app.hasRun){
app.hasRun=true;
// do your stuff
}
字段變量很好,sharedpreferences不適合這種情況。
private boolean mIsCalled;
...
private void functionIWant() {
if (mIsCalled) return;
mIsCalled = ture;
// your function body
}
在onStop()
方法中將SharedPreference
設置為false:
SharedPreferences settings = getSharedPreferences(HAS_RUN_BEFORE, 0);
SharedPreferences.Editor edit = settings.edit();
edit.putBoolean(HAS_RUN, true); //set to has run
edit.apply(); //apply
在onResume()
方法中調用您的方法:
checkFirstLaunchApp()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.