Androidのアプリケーション対象説明

2621 ワード

AndroidのApplicationはActivityやServiceと同様にAndroidフレームワークの構成部分です.このアプリケーションは通常、appが起動すると自動的に作成されます.Applicationはappで単一のモードであり、Applicationもapp全体のライフサイクルが最も長いオブジェクトです.すべてのActivityとServiceは1つのApplicationを共有しているので、Applicationは通常、データ、データ転送、データキャッシュを共有するために使用されます.
インターネットでいくつかの資料を調べて、Applicationの使用にいくつかの補充をしました.
  1.2つのActivityがビッグデータを転送する場合は、Intent転送ではなく、ApplicationでHashMapを作成し、送信側ActivityがApplicationのHashMapにデータを入れ、データのインデックスをIntentを介して受信側Activityに転送します.受信側Activityでは、アプリケーションから送信側に渡されたデータを取得できます.
  2.インターネットからダウンロードしたデータは、一時的にApplicationのHashMapに入れることができ、appが再びデータを要求したときにApplicationにデータが入っていることに気づいたら、再びネットからダウンロードする必要はありません.
  3.appのメモリには制限があるので、キャッシュされたデータが多すぎる場合は、ローカルのromまたはsdcardにキャッシュデータを書き込む必要があります.、
  4.アプリケーションは静的なので、アプリケーションの参照に最後に配置しないオブジェクトやデータがあります.アプリケーションのライフサイクルが長いため、アプリケーションにActivityのコントロールが参照されている場合、Activityがfinishを希望している場合、メモリが解放されず、メモリが漏洩します.
Java SEの開発の際、あるクラスを複数のクラスで共有したい場合は、そのクラスを静的共有オブジェクトに設定すればよい.Android開発では、個人的にはAndroidの開発規範に従うには、共有したデータを自分の書いたApplicationに置くべきだと考えています.他のクラスはappのApplicationを取得することで共有データを取得できます.自分のアプリケーションクラスを書く場合は、アプリケーションクラスを継承する必要があります.
public class MyApplication extends Application {
		//       
		private int shareData;
		
		@Override
		public void onCreate() {
			shareData = 100;
			super.onCreate();
		}

		//       
		public int getShareData() {
			return shareData;
		}
	}

Activityが共有データにアクセスする必要がある場合、getApplicationContext()メソッドでappのApplicationを取得し、強制タイプをMyApplicatonオブジェクトに変換することで共有データを取得できます.
public class MyActivity extends Activity {
		private MyApplication application;

		@Override
		public void onCreate(Bundle savedInstanceState) {
	        	super.onCreate(savedInstanceState);
	        	application = (MyApplication) this.getApplicationContext();
			System.out.println("     " + application.getShareData());
	        	setContentView(R.layout.main); //  XML  
		}
	}

完成したらAndroidManifestでxmlファイルをいくつか修正して、私たちのappを教えて、私たちのApplicationはMyApplicationを使いました.
<application
        android:name="com.shamoo.testapplication.MyApplication"
        android:label="@string/app_name"
        android:icon="@drawable/icon" >
        <activity
            android:name=".MyActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>