iOS AppDelegate等效于Android

时间:2012-08-06 14:51:15

标签: android ios uiapplicationdelegate

我有一个简单的Android应用程序,只有一个Activity。此活动下载一个小型XML文件并将内容显示给用户。目前,我在活动的onStart方法中开始下载。

据我了解,当设备方向发生变化时,活动会被销毁并重新创建。因此,当用户轮换我的应用程序时,将再次下载XML文件。我希望该应用程序只下载一次文件,因为它每天不会改变超过几次。因此,我希望保留下载的数据,以便在设备方向发生变化时重新使用本地数据。 Android中保留数据的理想对象是什么?

在iOS上我会使用AppDelegate下载一次数据并保留它。然后,显示数据的viewController可以重新使用本地数据,如果它被销毁并重新创建。

4 个答案:

答案 0 :(得分:26)

您必须创建自己的Application子类并在AndroidManifest.xml中指定它。 之后,将创建此类的新实例,并可在整个应用程序中访问该实例。

示例:

<强>的Manifest.xml

<application name="YourApp"> 

<强> YourApp.java

class YourApp extends Application {
    private String yourState;

    public void setState(String state){
        yourState = state;
    }
    public String getState(){
        return yourState;
    }
 }

<强> YourActivity.java

 class YourActivity extends Activity {
    @Override
    public void onCreate(Bundle bundle){
        YourApp appState = ((YourApp)getApplicationContext());// you can use getApplication() as well in the activity
        String state = appState.getState();
    }
 }

More info about Application

答案 1 :(得分:1)

您应该创建一个模型对象(您自己的类)来保留iOS和Android上的数据。 IMHO。

答案 2 :(得分:1)

使您的主类实现ProcessLifecycleObserver

这与iOS中的AppDelegate等效,因为它会在应用进程的基础上“总结” onCreateonResume之类的活动处理程序。

https://developer.android.com/reference/android/arch/lifecycle/ProcessLifecycleOwner

答案 3 :(得分:0)

我假设您已经看过这个页面:

http://developer.android.com/guide/topics/data/data-storage.html#pref

根据XML文件中的数据类型(如果它是相当简单的数据),使用“共享首选项”可能是一种简单的方法。您可以在需要时从XML重写新数据,同时仍然可以从共享首选项中使用它。