Да, так. Сервис не убивается, onDestroy не выполняется
Вот больше кода:
Код: Выделить всё
public class WidgetProvider extends AppWidgetProvider {
// log tag
private static final String TAG = "FlashLiteProvider";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
//Log.d(TAG, "onUpdate");
context.startService(new Intent(context, UpdateService.class).putExtra("flash_mode_on", false));
}
public static class UpdateService extends Service {
public boolean flash_mode_on;
public Camera cam;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
flash_mode_on = intent.getBooleanExtra("flash_mode_on", false);
Log.v(TAG, "flash_mode_on=" + flash_mode_on);
if (cam != null && flash_mode_on) {
flash_mode_on = false;
}
if (cam == null) {
cam = Camera.open();
}
Camera.Parameters p = cam.getParameters();
if (flash_mode_on) {
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
} else {
cam.stopPreview();
cam.release();
cam = null;
}
RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget);
views.setImageViewResource(R.id.imageViewWidget, flash_mode_on ? R.drawable.lamp : R.drawable.icon);
Intent pIntent = new Intent(UpdateService.this, UpdateService.class)
.putExtra("flash_mode_on", !flash_mode_on);
views.setOnClickPendingIntent(R.id.widgetRelativeLayout, PendingIntent.getService(this, 0, pIntent, 0));
ComponentName thisWidget = new ComponentName(this, WidgetProvider.class);
AppWidgetManager.getInstance(this).updateAppWidget(thisWidget, views);
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
}
Если закрыть камеру рукой, то в логи пишет:
11-09 17:27:13.708: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.128: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.238: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.358: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.468: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.578: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.688: ERROR/mm-camera(68): awb_algo_execution FAILED.............
11-09 17:27:14.818: ERROR/mm-camera(68): awb_algo_execution FAILED.............