Я надеюсь, что это не универсально, но я разрабатываю приложение для Sony SmartWatch. Когда я когда-либо совершаю ошибку, например допускаю исключение нулевого указателя. Я не могу перезапустить приложение. Как будто он остается в аварийном состоянии навсегда. Чтобы усугубить проблему, я также перестаю получать сообщения через Logcat, относящиеся к приложению. Когда я удаляю и переустанавливаю приложение, его нет в списке приложения SmartWatch на телефоне. Вроде не регистрируется. Это трудно устранить, так как на данный момент я не получаю никаких сообщений журнала. Единственное, что я могу сделать, это удалить приложение. Перезагрузите мой телефон. Затем переустановите приложение. В этот момент все возвращается к норме, и я снова могу начать писать код. Это подводит меня к моим вопросам. Есть ли лучший способ перерегистрировать элемент управления? Произойдет ли это с конечными пользователями? Если приложение выйдет из строя, его нужно будет удалить, перезагрузить и установить для восстановления?
Некоторые детали (имена изменены для защиты невиновных):
Я создал Broadcast Reciever и в своем mainfest настроил его для прослушивания этих трансляций.
<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.