2013-10-16 77 views

回答

5

您可以擴展Application並在您的自定義應用程序類的onCreate中運行該方法。這僅在每次應用程序啓動時運行一次。

例如:

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

請注意,這應該不能長時間運行。如果需要一些時間,請在AsyncTask中執行。

最後,你需要告訴Android你有一個自定義的應用程序類。您可以通過在application標籤的android:name屬性引用您的應用程序類做到這一點在你的清單:

<manifest ... > 
    <application 
     android:name=".MyApp" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity> 
      ... 
     </activity> 
    </application> 
</manifest> 
+0

最好將它放在應用程序之外的某個位置,因爲這會影響啓動時間。另一個答案是,使用布爾值來確定它是否已經運行,是更高性能的。 –

1

你也可以繼承應用程序類。然後重寫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> 
相關問題