第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android應(yīng)用程序中保存數(shù)據(jù)

如何在Android應(yīng)用程序中保存數(shù)據(jù)

慕碼人8056858 2019-09-02 08:16:43
我最近編寫了一個Android應(yīng)用程序。它只是一個簡單的應(yīng)用程序,允許您通過幾個簡單的計數(shù)器間隔保持籃球比賽的得分。我要求添加保存功能,這樣您就可以保存您的分?jǐn)?shù),然后重新加載它們。目前,當(dāng)您停止應(yīng)用時,您的數(shù)據(jù)會丟失。所以我想知道的是我必須添加以使應(yīng)用程序保存標(biāo)簽(分?jǐn)?shù))然后重新加載它。謝謝大家抱歉,我對這些東西知之甚少。
查看完整描述

3 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗 獲得超3個贊

你有兩個選擇,我會把選擇留給你。


共享首選項


這是Android獨有的框架,允許您在鍵值框架中存儲原始值(例如int,boolean,并且String嚴(yán)格來說,String這不是原始的)。這意味著您為值指定一個名稱,例如“homeScore”并將值存儲到此鍵。


SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);

SharedPreferences.Editor editor = settings.edit();

editor.putInt("homeScore", YOUR_HOME_SCORE);


// Apply the edits!

editor.apply();


// Get from the SharedPreferences

SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);

int homeScore = settings.getInt("homeScore", 0);

內(nèi)部存儲器


在我看來,這是你可能正在尋找的。您可以將任何想要的內(nèi)容存儲到文件中,這樣可以提供更大的靈活性。但是,該過程可能比較棘手,因為所有內(nèi)容都將存儲為字節(jié),這意味著您必須小心保持讀寫過程協(xié)同工作。


int homeScore;

byte[] homeScoreBytes;


homeScoreBytes[0] = (byte) homeScore;

homeScoreBytes[1] = (byte) (homeScore >> 8);  //you can probably skip these two 

homeScoreBytes[2] = (byte) (homeScore >> 16); //lines, because I've never seen a                   

                                              //basketball score above 128, it's

                                              //such a rare occurance.


FileOutputStream outputStream = getApplicationContext().openFileOutput(FILENAME, Context.MODE_PRIVATE);

outputStream.write(homeScoreBytes);

outputStream.close();

現(xiàn)在,您也可以查看外部存儲,但我不建議在這種特殊情況下,因為外部存儲可能不會在以后存在。(注意,如果你選擇它,它需要一個權(quán)限)


查看完整回答
反對 回復(fù) 2019-09-02
?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊

OP正在要求一個“保存”功能,這不僅僅是在程序的執(zhí)行過程中保存數(shù)據(jù)(你必須為應(yīng)用程序做任何事情。)


我建議將數(shù)據(jù)保存在SD卡上的文件中,這樣您不僅可以在以后調(diào)用它,還允許用戶將設(shè)備作為外部驅(qū)動器安裝在自己的計算機上,并獲取數(shù)據(jù)以便在其他地方使用。


所以你真的需要一個多點系統(tǒng):


1)實施onSaveInstanceState()。在這個方法中,你傳遞了一個Bundle,它基本上就像一個字典。在捆綁包中存儲盡可能多的信息,以便在完全停止的位置重新啟動應(yīng)用程序。在您的onCreate()方法中,檢查傳入的包是否為非空,如果是,則從包中恢復(fù)狀態(tài)。


2)實施onPause()。在此方法中,創(chuàng)建一個SharedPreferences編輯器并使用它來保存下次啟動應(yīng)用程序所需的任何狀態(tài)。這主要包括用戶的偏好(因此名稱),但與應(yīng)用程序的啟動狀態(tài)相關(guān)的任何其他內(nèi)容也應(yīng)該在此處。我不會在這里存儲分?jǐn)?shù),只是你需要重啟應(yīng)用程序的東西。然后,在onCreate()沒有包對象時,使用SharedPreferences接口調(diào)用這些設(shè)置。


3a)對于像分?jǐn)?shù)這樣的東西,你可以按照上面的Mathias的建議并將分?jǐn)?shù)存儲在返回的目錄中g(shù)etFilesDir(),使用openFileOutput()等。我認(rèn)為這個目錄是應(yīng)用程序的私有目錄,并且存在于主存儲器中,這意味著其他應(yīng)用程序和用戶無法訪問數(shù)據(jù)。如果你沒問題,那么這可能就是你要走的路。


3b)如果您確實希望其他應(yīng)用程序或用戶可以直接訪問數(shù)據(jù),或者數(shù)據(jù)將非常大,那么SD卡就是您的選擇。選擇一個像com / user1446371 / basketballapp /這樣的目錄名,以避免與其他應(yīng)用程序發(fā)生沖突(除非您確定您的應(yīng)用程序名稱相當(dāng)獨特)并在SD卡上創(chuàng)建該目錄。正如Mathias指出的那樣,您應(yīng)首先確認(rèn)已安裝SD卡。


File sdcard = Environment.getExternalStorageDirectory();

if( sdcard == null || !sdcard.isDirectory()) {

    fail("sdcard not available");

}

File datadir = new File(sdcard, "com/user1446371/basketballapp/");

if( !datadir.exists() && !datadir.mkdirs() ) {

    fail("unable to create data directory");

}

if( !datadir.isDirectory() ) {

    fail("exists, but is not a directory");

}

// Now use regular java I/O to read and write files to data directory

我建議為您的數(shù)據(jù)使用簡單的CSV文件,以便其他應(yīng)用程序可以輕松讀取它們。


顯然,您必須編寫允許“保存”和“打開”對話框的活動。我通常只是調(diào)用openintents文件管理器并讓它完成工作。但是,這要求您的用戶安裝openintents文件管理器以使用這些功能。


查看完整回答
反對 回復(fù) 2019-09-02
?
開滿天機

TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊

在onCreate:


SharedPreferences sharedPref = getSharedPreferences("mySettings", MODE_PRIVATE);


    String mySetting = sharedPref.getString("mySetting", null);

在onDestroy或等效:


SharedPreferences sharedPref = getSharedPreferences("mySettings", MODE_PRIVATE);


    SharedPreferences.Editor editor = sharedPref.edit();

    editor.putString("mySetting", "Hello Android");

    editor.commit();


查看完整回答
反對 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 386 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號