Итак, у меня проблемы с отображением растровых изображений в аплите, а не базальтах. Да, я знаю, что это связано с объемом памяти, но когда я смотрю на heap_bytes_free и учитываю фрагментацию памяти, я все еще не понимаю, в чем проблема.Растровые изображения, не отображающиеся в галечном аплите
Ниже я показываю некоторый код и некоторый отладочный вывод из журналов, и, похоже, во втором случае имеется чрезмерное количество памяти, которую можно захватить для отображения моего растрового изображения.
Я показываю два растровых изображения одинаковых размеров. Первый, compassWindow.png, использует только 3K в aplite и 6k в базальтах. Второй, decimalBackground.png использует 22k в базальтах (да 22,560 байт!) И не может быть создан в aplite.
При работе в aplite я не получаю сообщение об ошибке. Растровое изображение просто не отображается. Так что происходит?
Вот бревна из того же кода, выполняющиеся на двух платформах камешком оригинал (аплитов), и галька времени (базальт)
SDK 4.0.1 Ubuntu VirtualBox под Windoows 10. App 3.8.1-942- b60f188, Watch v3.8.2 (OG и Time) Вот код. Я поставил APP_LOG до и после команды gbitmap_create_with_resource. а) компас растрового
bitmap_layer = bitmap_layer_create(GRect(0, 0, 144,168));
APP_LOG(APP_LOG_LEVEL_DEBUG, "COMPASS Free: %d ", heap_bytes_free());
gBitMap = gbitmap_create_with_resource(RESOURCE_ID_COMPASS);
APP_LOG(APP_LOG_LEVEL_DEBUG, "COMPASS %d Free: %d ", (int) gBitMap, heap_bytes_free());
bitmap_layer_set_bitmap (bitmap_layer, gBitMap);
б) decimalBackground растрового
bitmap_layer = bitmap_layer_create(GRect(0, 0, 144,300));
APP_LOG(APP_LOG_LEVEL_DEBUG, "decimalBackground Free: %d ", heap_bytes_free());
gBitMap = gbitmap_create_with_resource(RESOURCE_ID_DECIMALBACKGROUND);
APP_LOG(APP_LOG_LEVEL_DEBUG, "decimalBackground %d Free: %d ", (int) gBitMap, heap_bytes_free());
bitmap_layer_set_bitmap (bitmap_layer, gBitMap);
Вот определение ресурсов в appinfo.json. Вы заметите, что я использую новый унифицированный тип «bitmap».
"media": [
{
"type": "bitmap",
"name": "COMPASS",
"file": "images/compassWindow.png"
},
{
"type": "bitmap",
"name": "DECIMALBACKGROUND",
"file": "images/decimalBackground.png"
},
Вот результат: 1. базальт:
[10:54:44] wind_dir.c:101> COMPASS Free: 45928
[10:54:44] wind_dir.c:103> COMPASS 537019168 Free: 39664
[10:54:44] msg_handler.c:46> current window: startWind
13 seconds later
[10:54:57] javascript> raceQs V0.81:294 Current Window: performance
[10:54:57] position.c:171> decimalBackground Free: 46132
[10:54:57] position.c:173> decimalBackground 537019212 Free: 23572
Примечание: в 10:54:44, байты бесплатно идут от 45928 до 39644 - разница в 6264
В 10:54:57, они идут от 46132 до 23572 - разница 22 560. 2. аплит:
[10:47:13] wind_dir.c:101> COMPASS Free: 4856
[10:47:14] wind_dir.c:103> COMPASS 536994972 Free: 1776
[10:47:20] position.c:171> decimalBackground Free: 5060
[10:47:20] position.c:173> decimalBackground 0 Free: 5060
В 10:47:14 байт бесплатно перейти от 4865 до 1776 года - разница в 3080. В 10:47:20 bytes_free не изменится, потому что gbitmap_create_with_resource (RESOURCE_ID_DECIMALBACKGROUND) ; терпит неудачу. А вот изображения, размер файла:.
-rwxrwx--- 1 alan alan 2772 Oct 14 11:55 compassWindow.png
-rwxrwx--- 1 alan alan 1637 Jan 18 16:02 decimalBackground.png