1

2 つの部分 (アクティビティ) を含む 1 つのアプリケーションを Android で実現しました

1- 主なアクティビティは GP を受け取り、マップ上の X、Y ピクセルを計算します
2- SD カードからマップをロードした後、マップを表示/スクロールします。

両方のアクティビティ間の交換は、インテントとエクストラによって 20 秒ごとに行われます (マップ上の X、Y プロット)

すべて正常に動作しています。

問題は、インテントを送信するたびに新しいマップを作成し、多くの交換後にアプリケーションがクラッシュすることです。

新しいマップを作成せずに、1 つのアクティビティにデータを転送することはできますか? または、2 番目のアクティビティの OnCreate パラメータを変更するその他のソリューション

助けてくれてありがとう

4

2 に答える 2

0

アクティビティを切り替えるたびに onCreate が実行されるため、正確にクラッシュしています。毎回新しいアクティビティが開始されるため、各アクティビティのインスタンスが複数になり、メモリが不足します。

これが起こらないようにするには、次のようにインテントにフラグを設定する必要があります。

int iflags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT;
Intent i = new Intent("com.you.yourapp.yourotheractivity");
i.setFlags(iflags);
// Apply your extras
startActivity(i);

このフラグにより​​、バックグラウンドにある場合は他のアクティビティが再利用されるため、 onCreate() は最初にのみ実行され、その後は onResume() のみが実行されます

于 2011-11-20T11:35:29.700 に答える
0

android:launchModeAndroidManifest.xml のメイン アクティビティに追加します。singleTask要件に応じてまたはのいずれかを使用singleInstanceします。

<activity android:name="com.app.activity" android:launchMode="singleTask" ...>


http://developer.android.com/guide/topics/manifest/activity-element.html#lmode からの引用:

シングルタスク

システムは、新しいタスクのルートにアクティビティを作成し、インテントをそこにルーティングします。ただし、アクティビティのインスタンスがすでに存在する場合、システムは、新しいインスタンスを作成するのではなく、その onNewIntent() メソッドを呼び出すことによって、インテントを既存のインスタンスにルーティングします。

単一インスタンス

「singleTask」と同じですが、システムはインスタンスを保持しているタスクに他のアクティビティを起動しません。アクティビティは、常にそのタスクの唯一のメンバーです。

于 2011-11-20T12:21:10.067 に答える