2011-08-12 9 views
0

私のアプリでは、ちょうどAとBの2つのアクティビティの間で実行しています。ユーザーごとに、彼はAからBに切り替えてからBをAに戻し、再びAからBに、BからAに切り替えて進みます。アンドロイドアプリのStackoverflowエラー

これらの両方のアクティビティにはリストビューがあります。ユーザーが出入りするたびに、データベースに格納されているデータを追加しています。これらのデータはRSSフィードから取得され、非常に高い数で使用されることもあります。このため、めったに私はスタック上のフローエラーを取得しています。

まず、レイアウトを相対レイアウトでデザインし、リストビューを相対レイアウト内に配置しました。私はここで答えを得ました。このエラーは相対的レイアウトに起因する可能性があり、私はすべてのレイアウトを線形レイアウトに変更しましたが、まだエラーが発生しています。

それが現在のタスクのスタックの一番上にプッシュされる新しいアクティビティを起動すると、この問題

+1

は、どの部分がスタックオーバーフローをスローするのかを知るために重要です。多分あなたの例外ログをここに投稿してください。 また、あなたのソースコードの関連部分は、あなたに本当のヒントを与えるために必要です。 – berlindev

+0

あなたが2つのアクティビティを使用している場合は、(A)をもう一度開始するときに、それらを1つのインスタンスにするか、古いもの(A)を終了する必要があります。 – Blundell

答えて

3

を克服する方法について説明します。下図に示すように、

                |-> B - StackOverflow 
    | |     | |    |A|     |A| 
    | |     |B|    |B|     |B| 
    |A|     |A|    |A|     |A| 
    ```     ```    ```     ``` 
Before launching After launching After launching  Trying to launch 
activity B   activity B   activity A   activity B 

だから結局、あなたはstackoverflowのエラーが発生し、あなたのタスクスタック上のスペースが不足します。

intent flagsの一部を使用してスタック履歴をクリアすることを検討してください。あなたのデータから、私はフラグが役に立つと思うと思う - FLAG_ACTIVITY_NO_HISTORY。しかし、それがあなたが望む振る舞いであるかどうかを確認する必要があります。ちょうど残りのアクティビティフラグを調べて、あなたのアプリケーションに合った正しいものを選んでください。

+0

ありがとう... FLAG_ACTIVITY_CLEAR_TOPで問題を解決しました –

関連する問題