5

嘿,我想知道如何在我的一个活动中只运行一次方法refreshChannel();onCreate直到应用程序被杀死或重新启动?

4

2 回答 2

11

您可以在自定义应用程序类中扩展Application和运行该方法。onCreate这仅在每次应用程序启动时运行一次。

例如:

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Your methods here...
    }
}

请注意,这不应该是长期运行的。如果需要一些时间,请在AsyncTask.

最后,你需要告诉 Android 你有一个自定义的 Application 类。android:name您可以通过在标记的属性中引用您的应用程序类来在清单中执行此操作application

<manifest ... >
    <application
        android:name=".MyApp"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity>
            ...
        </activity>
    </application>
</manifest>
于 2013-10-16T22:29:45.517 回答
2

您可以子类化应用程序类。然后重写Application类的子类中的onCreate方法。向应用程序子类添加一个字段。

public class SubApplication extends Application {
public boolean hasRefreshed;
        @Override
    public void onCreate() {
        super.onCreate();
        hasRefreshed=false;
    }
}

然后,当您执行 Activity 时:

SubApplication app = (SubApplication ) context
                    .getApplicationContext();
if(app.hasRefreshed){
//do nothing
}else{
refresh();
app.hasRefreshed=true;
}

最后,将此行添加到清单中,以便系统知道使用子类。

<application
        android:name=".SubApplication "
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity>
            ...
        </activity>
    </application>
于 2013-10-16T22:31:41.943 回答