これが一般的でないことを願っていますが、Sony SmartWatch 用のアプリを開発しています。ヌルポインター例外を許可するなどの間違いを犯したときはいつでも。アプリを再起動できません。いつまでも潰れたままのような状態です。さらに悪いことに、アプリに関連する Logcat を介したメッセージの受信も停止します。アプリをアンインストールして再インストールすると、スマートフォンの SmartWatch アプリに表示されません。まるで登録しない。この時点でログ メッセージが表示されないため、トラブルシューティングが困難です。私にできる唯一のことは、アプリをアンインストールすることです。電話を再起動します。次に、アプリを再インストールします。その時点で正常に戻り、再びコードを書き始めることができます。それが私の質問につながります。コントロールを再登録するより良い方法はありますか? これはエンドユーザーにも起こりますか? アプリがクラッシュした場合、アンインストールする必要があります。
いくつかの詳細 (罪のない人を保護するために名前が変更されています):
ブロードキャスト レシーバーを作成し、メインフェストでこれらのブロードキャストをリッスンするように設定しました。
<receiver android:name=".MyExtensionReceiver" >
<intent-filter>
<!-- Receiver intents -->
<action android:name="com.sonyericsson.extras.liveware.aef.registration.EXTENSION_REGISTER_REQUEST" />
<action android:name="com.sonyericsson.extras.liveware.aef.registration.ACCESSORY_CONNECTION" />
<!-- Control intents -->
<action android:name="com.sonyericsson.extras.aef.control.START" />
<action android:name="com.sonyericsson.extras.aef.control.STOP" />
<action android:name="com.sonyericsson.extras.aef.control.PAUSE" />
<action android:name="com.sonyericsson.extras.aef.control.RESUME" />
<action android:name="com.sonyericsson.extras.aef.control.ERROR" />
<action android:name="com.sonyericsson.extras.aef.control.TOUCH_EVENT" />
<action android:name="com.sonyericsson.extras.aef.control.SWIPE_EVENT" />
</intent-filter>
MyExtensionReceiver のコード:
public class MyExtensionReceiver extends BroadcastReceiver {
public MyExtensionReceiver() {
super();
Log.d("mytag", "MyExtensionReceiver Loaded");
Dbg.setLogTag("mytag");
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("mytag", "onReceive: " + intent.getAction());
intent.setClass(context, MyExtensionReceiver.class);
context.startService(intent);
}
}
アプリがクラッシュしても、onReceive が呼び出されたときにログ メッセージが表示されるはずです。EXTENSION_REGISTER_REQUEST ブロードキャストが送信されないようです。アンインストール、再起動、再インストールを何度も繰り返しています。最終的に、アプリは SmartConnect アプリによって検出されます。