0

ユーザーが私のアプリケーションの戻るボタンを押したとき。シナリオは次のとおりです。

  1. ユーザーがアプリケーションを起動します-アクティビティが表示されます
  2. ユーザーが戻るボタンを押す
  3. ユーザーがアプリケーションを再起動します。 この時点で、アプリケーションは空白の画面を表示するだけで、しばらくすると[強制終了]ダイアログが表示された後、どのボタン(ホーム/戻る)も応答しません。
    注:ユーザーが[ホーム]を押してからアプリを再起動した場合、ユーザーが[戻る]を押してから再起動した場合にのみ、これは発生しません。

私のonCreate()には、いくつかのネットワークセットアップコードがあります。ただし、onDestroy()には対応するクリーンアップコードがあるため、なぜこれが発生するのかわかりません。

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d(DEBUG_TAG, "onCreate()");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

     // Aquire the multicast lock
     // Create an instance of JmDNS
     // Add a listener for Bonjour services of a given type 
}

@Override
protected void onDestroy() {
    Log.d(DEBUG_TAG, "onDestroy()");
     // Remove the services listener 
     // Set the reference to JmDNS instance null
     // Release the multicast lock
    super.onDestroy();
}

何が起こっているのかわからず、これをデバッグする方法もわかりません。

興味深いことに 、Androidマーケットからダウンロードしてデバッグに使用した人気のアプリ「ZeroconfBrowser」にも同じ問題があるようです。

編集:コードをonStart()/ onStop()からonCreate()/ onDestroy()に変更しました。以前と同じ問題。

編集:同様の問題で実行している人にとって、これは私の悲惨さを引き起こしていたものです。Androidコードは原因ではありませんでした: http ://sourceforge.net/tracker/index.php?func = detail&aid = 2933183&group_id = 93852&atid = 605791

4

1 に答える 1

2

UI スレッドでネットワーク リクエストを行っている可能性があります。それを処理するために、 Painless ThreadingAsyncTaskをチェックアウトすることができます。

onCreateと でセットアップとティアダウンを行うことをお勧めしますonDestroyアクティビティのライフ サイクルonStart中に複数回呼び出すことができます。あなたのコードはこのケースを防いでいますか?

于 2011-03-30T19:40:47.077 に答える