시작 활동 (예 : Activity 1의 Book 클래스) 에 변수를 만들 수 있으며 응용 프로그램의 어느 곳에서나 사용할 수 있습니까 (예 : 활동 3의 Book 클래스). , 4 & 5) 실제로 통과하지 않고.응용 프로그램의 아무 곳에서나 변수 액세스 (안드로이드)
my xml 처리기가 일련의 개체를 만들기 때문에 개체를 변경 한 후에도 xml 파일을 업데이트하므로 요청하는 중입니다.
시작 활동 (예 : Activity 1의 Book 클래스) 에 변수를 만들 수 있으며 응용 프로그램의 어느 곳에서나 사용할 수 있습니까 (예 : 활동 3의 Book 클래스). , 4 & 5) 실제로 통과하지 않고.응용 프로그램의 아무 곳에서나 변수 액세스 (안드로이드)
my xml 처리기가 일련의 개체를 만들기 때문에 개체를 변경 한 후에도 xml 파일을 업데이트하므로 요청하는 중입니다.
정적 변수를 만들 수 있습니다. 적절한 액세스 (예 : public
)로 신고 된 경우 동일한 프로세스의 모든 활동에서 바로 사용할 수 있습니다. (이것은 기본값이 될 것이므로 별도의 프로세스로 작업을하려면 추가 작업이 필요합니다.)
그런 전역 변수를 별도의 클래스로 구분하는 것이 일반적입니다.
그러나 앱을 백그라운드로 푸시하면 프로세스가 종료되어 다시 생성 될 수 있습니다. 이 경우 정적 변수에 저장된 모든 데이터가 손실됩니다. 대안으로는 SharedPreferences, 데이터베이스 또는 ContentProvider 사용이 있습니다.
응용 프로그램을 확장하는 GlobalVariables라는 이름으로 클래스를 구현합니다. 당신의 AndroidManifest.xml에서
public class GlobalVariables extends Application
응용 프로그램 태그에서이 작업을 수행 :
<application android:label="@string/YourAppName" android:icon="@drawable/YourIcon"
android:name=".activities.GlobalVariables.">
안되는 (당신이 파일을 명시하는 활동을 추가 할 유사) 클래스를 선언하는 패키지 경로를 잊어 버려.
그런 다음 애플리케이션의 모든 곳에서이 클래스와 변수 또는 메소드에 액세스 할 수 있습니다.
GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();
응용 프로그램에서 확장 클래스가 (예를 들어, 여기에 우리의 GlobalVariables가) 앱 시작으로 생성되고 응용 프로그램이 파괴 될 때까지 사용할 수 있습니다 : 어떤 활동의에서 onCreate 방법으로이 작업을 수행합니다.
원하는 변수를 저장할 수있는 HashMap 또는 기타 항목을 GlobalVariables 클래스에 포함 할 수 있습니다. 첫 번째 Activity의 변수를 GlovalVariables로 밀어 넣고 두 번째 물마루에서 GlobalVariables로 인스턴스를 가져옵니다. 이와 같이 (다시 한번) :
GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();
문제는 응용 프로그램이 백그라운드에있을 때 운영 체제가'Application' 객체 (그리고 전체 프로세스)를 파괴 할 수 있다는 것입니다. Extending'Application'은 단순한 싱글 톤이나 정적 클래스와 비교하여 더 이상 이것에 대한 보호를 제공하지 않는다. –
그래서 모든 활동간에 수업을 사용할 수있는 쉬운 방법이 없다는 말입니까? – Raigex
@Raigex - 반대로 말한 것 같습니다. 공유 변수를 보유 할 클래스를 선언하십시오. 그것을 싱글 톤 클래스로 만들거나 다른 모든 공유 변수를 정적으로 만들 수 있습니다. 프로세스를 중단 한 상태에서 데이터를 보호해야하는 경우 (응용 프로그램 재시작시 데이터를 다시 작성하는 것과는 대조적으로) 조금 더 신중해야합니다. –
고맙습니다. 그 일을하는 자습서를 알고 있습니까? 데이터가 파손되지 않도록 보호하는 부분을 의미합니다. – Raigex