如何在每个应用启动时运行一次方法?

时间:2013-10-16 22:22:29

标签: android

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

2 个答案:

答案 0 :(得分:6)

您可以扩展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>

答案 1 :(得分:2)

您可以继承应用程序类。然后覆盖Application类的子类中的onCreate方法。将字段添加到应用程序子类。

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

然后当你执行你的活动时:

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>