私のアプリには Facebook との統合がなければ機能がありません。そのため、私のアプリが onCreate で最初に行うことは、Facebook にログインし、ユーザーのニュース フィードを取得してアプリにロードするリスナーを提供することです。ただし、Kindle Fire エミュレーターでは、SDK からの承認呼び出しを使用して、アプリで Facebook のログイン ダイアログを開くことさえできません。
このログインとアプリの残りの部分は、SDK マネージャーからインストールした公式の Kindle Fire エミュレーターを除いて、いくつかのテスト デバイスと、作成したすべての AVD エミュレーターで問題なく動作します。残念ながら、私は Kindle Fire にアクセスできないので、実際のデバイスでテストすることはできません。
問題を切り分けるために、コードを一時的に変更して、コールバック リスナーでまったく何もしないようにしました。onDataLoaded() 実装用に空の void メソッドを残しただけです。onCreate では、次のように呼び出しています。
m_fbHelper.authorize(new NFDataLoadedListener() {
public void onDataLoaded() {
// TODO Auto-generated method stub
}
}, this);
FbHelper クラスの定義は次のとおりです。
public void authorize(NFDataLoadedListener dataLoadedListener, Home homeActivity){
m_facebook.authorize(homeActivity, s_permissions, new FacebookDataRetrievalListener(dataLoadedListener));
}
アクティビティが作成され、この呼び出しが行われると、「読み込み中」という通知ボックスが表示されます。これは通常、ログイン時に発生します。その後、アプリがクラッシュし、エミュレーターがホーム画面に戻ります。
ログには次のように書かれています。
08-15 01:40:23.338: D/Zygote(32): プロセス 414 がシグナルによって終了しました (4)
08-15 01:40:23.342: I/ActivityManager(61): プロセス com.mattgmg.socialadvancedpro (pid 414) が停止しました。
08-15 01:40:23.366: E/InputDispatcher(61): チャネル '405ea458
com.mattgmg.socialadvancedpro/com.mattgmg.socialadvancedpro.Home (サーバー)' ~ 消費者が入力チャネルを閉じたか、エラーが発生しました。イベント=0x8
08-15 01:40:23.366: E/InputDispatcher(61): チャネル '405ea458 com.mattgmg.socialadvancedpro/com.mattgmg.socialadvancedpro.Home (サーバー)' ~ チャネルは回復不能に壊れており、破棄されます! 08-15 01:40:23.392: I/WindowManager(61): WIN DEATH: ウィンドウ {4061da60 com.mattgmg.socialadvancedpro/com.mattgmg.socialadvancedpro.Home 一時停止 = false}
08-15 01:40:23.422: I/WindowManager(61): WIN DEATH: ウィンドウ {405ea458 com.mattgmg.socialadvancedpro/com.mattgmg.socialadvancedpro.Home 一時停止 = false}
08-15 01:40:23.482: I/WindowManager(61): WIN DEATH: ウィンドウ {40636a48 com.mattgmg.socialadvancedpro/com.mattgmg.socialadvancedpro.Home 一時停止 = false}
08-15 01:40:23.512: E/InputDispatcher(61): 不明な入力チャネルのスプリアス受信コールバックを受信しました。fd=175、イベント=0x8
08-15 01:40:23.512: E/InputDispatcher(61): 不明な入力チャネルのスプリアス受信コールバックを受信しました。fd=178、イベント=0x8
08-15 01:40:23.863: I/LAB126(119): StatusBarService が意図を聞きます。アクション: com.lab126.intent.TOP_WINDOW_CHANGED
スタック トレースがないため、Facebook SDK がログイン ダイアログを表示できなかった理由がわかりません。他の SO 投稿では、これらのログ メッセージはメモリ リークを示していると書かれていますが、Facebook にログインする以外にアプリで何もしていないため、メモリ リークである場合は SDK の問題である必要があります。