开发者

Parsing XML one time only on 1st startup

I'm currently using a Parser 开发者_StackOverflow中文版and it parses every time the onCreate gets called. My parser uses an XML file that's located in my assetfolder.

Is there any chance that I can make it parse only once, instead of every time I rotate the screen or restart the application?

Thank you :)


There are 2 answers to this question. The easy one first:

If you only want this to happen once, create a static boolean in your main activity and set it to true when the XML is parsed in. Then use:

if(!isParsed)
    XML.parse();

The more complete answer to this question is to make sure you are handling configuration changes correctly.

I suggest you read this article on how to implement configuration change handling. You should be able to solve this problem "the Android way" by implementing this.

Hope this helps!


Persist a flag using the Preferences system the first time you complete a parse, and check this each time before parsing again. Do all this in your OnCreate() method.

    SharedPreferences settings = getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
    if (!settings.getBoolean("parsed", false)) {
        parseTheXML();

        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("parsed",  true);
        editor.commit();
    }

There are other ways but this has the advantage of working across app reloads/phone power cycles - assuming that's what you want.


You could add a preference. Something like -

void setIsAppOpened() {
    editor.putBoolean(APP_OPENED, true);
    editor.commit();
}

Set it in your onCreate(). Then, also add the following code to check if the preference exists.

if (!prefs.contains(APP_OPENED))
    {
        //parse the XML
        setIsAppOpened();
    }


You can parse your XML in a "Application" object and have it accessible from there. Check out the documentation at http://developer.android.com/reference/android/app/Application.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜