我想創建一個包含對象的數據的ArrayList(就像地址和屬性列表一樣(非常複雜)),我在想:如何讓一個對象可訪問(以及可編輯)由所有活動,而不僅僅是一個它instanciated?在Android中創建一個可被所有Activites訪問的對象
基本上這:
- 創建活動2陣列中的活動1次
- 訪問同一陣列和3
- ???
- 利潤。
我想創建一個包含對象的數據的ArrayList(就像地址和屬性列表一樣(非常複雜)),我在想:如何讓一個對象可訪問(以及可編輯)由所有活動,而不僅僅是一個它instanciated?在Android中創建一個可被所有Activites訪問的對象
基本上這:
最簡單的方法做,這是通過創建一個單身訪問類的實例。這是一種只能創建一次的對象,如果您嘗試再次訪問它,它將返回對象的現有實例。 在裏面你可以容納你的數組。
public class Singleton {
private static final Singleton instance = new Singleton();
// Private constructor prevents instantiation from other classes
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
你應該讓靜態和任何其他活動訪問.....
您可以擴展應用程序類。並在那裏添加你的數組。
您可以使用此命令
MyApplication appContext = (MyApplication)getApplicationContext();
那麼你可以創建一個常量類,並聲明您ArrayList的一個靜態變量。
1)
Class ConstantCodes{
public static ArrayList<MyClass> list = new ArrayList<MyClass>;
}
來自世界各地要按只是ConstantCodes.list
2.這將是訪問),您可以通過應用程序類這樣
class Globalclass extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class TempActivity extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
如何擴展您的類關於使用靜態關鍵字?
public static SomeClass someObject
該啓動對對象
1-在您的活性1,聲明陣列中公共靜態
public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>();
2-在你活性2,活動3,等訪問您的ArrayList
Activity1.myArray
感謝您的回答!這也是最有效的方式嗎?單源有效的資源是多少? –
Singleton的壞處:由於沒有對象的實際所有者,garbagecollector永遠不會將其從內存中移除,所以只要應用程序處於活動狀態(直到onDestroy),它就會佔用該內存。但是,我們也可以認爲你不必一直創建新的對象,這使你更快的速度和更少的內存使用。 – Nic