androidのonNewIntentの簡単な説明
1626 ワード
回転:http://blog.csdn.net/tyj1982/article/details/6848879
Androidアプリケーションの開発時には、Activityから別のActivityを起動して、新しいActivityにデータを送るのはとても簡単ですが、バックグラウンドで動作するActivityをフロントに戻して、データを伝えると少し問題があるかもしれません.
まず、デフォルトでは、Intentを介してActivityに起動すると、同じActivityが既に存在していても、システムは新しいActivityのインスタンスを作成して表示します.Activityを複数回実例化しないためには、Android Manifest.xmlにactivityのロード方式を設定することにより、シングルタスクモードを実現する必要があります.
<activity android:label="@string/app_name" android:launchmode="singleTask"android:name="Activity1"></activity>
launchModeがsingleTaskの場合、Intentを通じてActivityに起動します.システムに既に一例があると、システムはこのインスタンスに要求を送信します.しかし、この時、システムは通常の状況で要求データを処理するonCreate方法を呼び出すのではなく、OnewIntent方法を呼び出します. protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);//must store the new intent unless getIntent() will return the old one
processExtraData();
}
忘れないでください.システムはいつでもバックグラウンドの運行するActivityを殺してしまうかもしれません.もしこのすべてが発生したら、システムはOnewIntentメソッドを呼び出さずに、OnewIntentメソッドを起動します.良い解決方法はOneCreateとOnewIntentメソッドで同じ処理データを呼び出す方法です.以下の通りです.public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
processExtraData();
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);//must store the new intent unless getIntent() will return the old one
processExtraData()
}
private void processExtraData(){
Intent intent = getIntent();
//use the data received here
}