СОКРАЩЕНИЕ ИСПОЛЬЗОВАНИЯ РЕСУРСОВ ПРИЛОЖЕНИЕМ
REDUCING RESOURCE USE BY APPLICATION

УРОВЕНЬ ТЕХНИКИ
[0001] Облачное хранилище представляет собой модель хранения данных, при которой данные хранятся на удаленных серверах, доступ к которым осуществляется через Интернет, или в «облаке». Службы облачного хранения являются службами интернет-хостинга (службами размещения в Интернете), которые позволяют пользователю выгружать и синхронизировать свои файлы в облачное хранилище и осуществлять доступ к этим файлам с любого устройства, например, мобильного телефона, планшета или компьютера, подключенного к Интернету
[0002] Существует много служб облачного хранения, таких как MICROSOFT ONEDRIVE, DROPBOX, GOOGLE DRIVE, BOX и APPLE ICLOUD DRIVE. Некоторые операционные системы имеют функции резервного копирования, которые взаимодействуют со службами облачного хранения. В частности, некоторые операционные системы выполнены с возможностью осуществления связи (взаимодействия) со службой облачных хранилищ.
[0003] В настоящее время приложения, находящиеся за пределами операционной системы, могут растрачивать ресурсы, продолжая пытаться выгрузить файл, а также пытаться выгружать разные файлы многократно, даже если сетевого соединение отсутствует.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Описаны методики сокращения использования ресурсов для приложений, которые выгружают содержимое в облако.
[0005] Приложение может управлять очередью выгрузки для передачи содержимого (контента), принятого в вычислительном устройстве, в облачную службу. Содержимое может включать в себя, но не ограничивается этим, фотографии, снимки экрана, сохраненные файлы, и т.п. Управление очередью выгрузки может включать в себя добавление обнаруженного нового содержимого в очередь выгрузки и указание нового содержимого в качестве нового в очереди выгрузки. Управление очередью выгрузки может дополнительно включать в себя указание нового содержимого в качестве отправленного в очереди выгрузки, если новое содержимое успешно передается в облачную службу; и указание содержимого, которое получило отказ при выгрузке, в качестве нового в очереди выгрузки. Дополнительно, управление очередью выгрузки может дополнительно включать в себя приостановку и отмененную приостановку очереди выгрузки на основе обнаруженного изменения состояния.
[0006] Приложение может взаимодействовать с операционной системой вычислительного устройства для передачи любого содержимого, указанного в качестве нового в очереди выгрузки, пока очередь выгрузки указана находящейся в состоянии отмененной приостановки, в облачную службу с использованием сетевого ресурса вычислительного устройства. Преимущественно, приложение, за пределами обработки нового содержимого, обнаруживает изменения сетевого соединения в отношении потери сетевого соединения и доступности сетевого соединения так, чтобы в ответ на обнаружение потери сетевого соединения приложение устанавливало очередь выгрузки в состояние приостановки, при которой не осуществлялось бы какой-либо попытки выгрузки, даже если указано новое содержимое. Другие состояния отказа могут быть обнаружены и использованы для приостановки или отмены приостановки очереди.
[0007] Данный раздел «Сущность изобретения» приведен для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в разделе «Подробное описание». Этот раздел «Сущность изобретения» не предназначен для определения ключевых признаков или существенных признаков заявленного изобретения, а также не подразумевается, что он не предназначен для ограничения объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] На Фигуре 1 показано примерное функциональное окружение, в котором могут быть реализованы различные варианты осуществления настоящего изобретения.
[0009] На Фигуре 2 показан примерный вариант реализации приложения, включающего в себя сокращение использования ресурсов приложением, как это описано в данном документе.
[0010] На Фигуре 3 показана примерная блок-схема последовательности операций способа обеспечения автоматической выгрузки содержимого без сокращения использования ресурсов.
[0011] На Фигурах 4A и 4B показаны примерные блок-схемы последовательностей операций способов обеспечения сокращения использования ресурсов.
[0012] На Фигуре 5 показана примерная блок-схема последовательности операций способа обеспечения сокращения использования ресурсов.
[13] На Фигуре 6 показан примерный пользовательский интерфейс приложения, которое включает в себя сокращение использования ресурсов приложением.
[14] На Фигуре 7 показана блок-схема, изображающая компоненты вычислительного устройства, которые могут использоваться в некоторых вариантах реализации, описанных в данном документе.
ПОДРОБНОЕ ОПИСАНИЕ
[0015] Описаны методики сокращения использования ресурсов для приложений, которые выгружают содержимое в облако.
[0016] Приложение может управлять очередью выгрузки для передачи содержимого, принятого в вычислительном устройстве, в облачную службу. Термины «приложение» и «app» используются взаимозаменяемо в данном документе. Кроме того, термины «передавать» и «выгружать» могут использоваться взаимозаменяемо в данном документе. Содержимое может включать в себя, но не ограничивается этим, фотографии, снимки экрана, сохраненные файлы и т.п. Управление очередью выгрузки может включать в себя добавление обнаруженного нового содержимого в очередь выгрузки и указание нового содержимого в качестве нового в очереди выгрузки. Управление очередью выгрузки может дополнительно включать в себя указание нового содержимого в качестве отправленного в очереди выгрузки, если новое содержимое успешно передается в облачную службу; и указание содержимого, которое получило отказ при выгрузке, в качестве нового в очереди выгрузки. Дополнительно, управление очередью выгрузки может дополнительно включать в себя приостановку и отмененную приостановку очереди выгрузки на основе обнаруженного изменения состояния.
[0017] Приложение может взаимодействовать с операционной системой вычислительного устройства для передачи содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу с использованием сетевого ресурса вычислительного устройства. Преимущественно, за пределами процесса выгрузки, приложение может дополнительно обнаруживать изменения сетевого соединения в отношении потери сетевого соединения и доступности сетевого соединения так, чтобы в ответ на обнаружение потери сетевого соединения, приложение могло установить очередь выгрузки в состояние приостановки, при которой не осуществлялось бы какой-либо попытки выгрузки, даже если указано новое содержимое.
[0018] Преимущественно, описанные методики включают в себя идентификацию текущего статуса доступности сети, что приводит к тому, что программы программного обеспечения сокращают ресурсы, которые были бы растрачены в многократных попытках осуществления выгрузки, когда сетевого соединения отсутствует. Кроме того, обнаружение доступности сети осуществляется за пределами процесса выгрузки, так что процессу выгрузки не требуется проверять возможность сетевого соединения перед выгрузкой каждый раз, когда обнаружено новое содержимое.
[0019] На Фигуре 1 показано примерное функциональное окружение, в котором могут быть реализованы варианты осуществления настоящего изобретения. Как показано на Фигуре 1, примерное функциональное окружение может включать в себя вычислительное устройство 100, функционально соединенное с сетью 155 для взаимодействия с облачной службой 145, а также с другими пользовательскими вычислительными устройствами (не показаны). Облачная служба 145 может быть реализована одним или более серверами, такими как сервер 150.
[0020] Сеть 155 может быть, но не ограничена этим, сетью сотовой связи (например, беспроводной телефонной связи), коммутируемым соединением «точка-точка», сетью спутниковой связи, Интернетом, локальной сетью (LAN), глобальной сетью (WAN), сетью WiFi, специальной сетью или их сочетанием. Такие сети широко используются для соединения различных типов сетевых элементов, таких как концентраторы, мосты, маршрутизаторы, коммутаторы, серверы и шлюзы. Сеть 155 может включать в себя одну или более подсоединенных сетей (например, многосетевое окружение), включая общедоступные сети, такие как Интернет, и/или частные сети, такие как защищенная частная сеть предприятия. Доступ к сети 155 может быть предоставлен через одну или более проводных или беспроводных сетей доступа, как должно быть понятно специалистам в данной области техники.
[0021] Вычислительное устройство 100 может быть, но не ограничено этим, персональным компьютером (например, настольный компьютер), ноутбук, персональный цифровой помощник (PDA), мобильный телефон (или смартфон), планшет, планшетный компьютер, игровое устройство или игровая приставка (консоль), интеллектуальный телевизор или терминал, которые могут использоваться для осуществления доступа к серверу, такого как сервер 150, по сети 155. Сервер 150 может быть сервером предприятия, облачным сервером, выделенным сервером, хост-сервером (сервером размещения) или чем-либо подобным.
[0022] Должно быть очевидно, что вычислительное устройство 100 может представлять собой компьютерную систему любого типа, которая предоставляет своему пользователю возможность загружать и исполнять программы программного обеспечения и возможность осуществлять доступ к сети, такой как сеть 155, и взаимодействовать (осуществлять связь) с одним или более серверами, такими как сервер 150, а также другими вычислительными устройствами (не показаны).
[0023] Вычислительное устройство 100 может быть воплощено так, как описано по отношению к вычислительной системе 700, как показано на Фигуре 7. Например, вычислительное устройство 100 выполнено с возможностью принимать ввод от пользователя, в частности, голос, прикосновение и/или через клавиатуру и/или компьютерную мышь, которая функционально соединена с вычислительным устройством 100. Вычислительное устройство 100 может дополнительно включать в себя устройство отображения (например, компьютерный монитор), которое выполнено с возможностью отображать один или более пользовательских интерфейсов пользователю. В некоторых примерах устройство отображения может быть сенсорным экраном так, чтобы вычислительное устройство 100 могло принимать пользовательский ввод посредством устройства отображения.
[0024] Дополнительно, вычислительное устройство 100 может быть выполнено с одним или более центральными блоками обработки (CPU), такими как процессор 105, запоминающим устройством, таким как кэш-память 110, запоминающим устройством большой емкости, таким как система 125 хранения, и устройствами ввода-вывода, такими как сетевой интерфейс (например, интерфейс 130 беспроводной сети/связи и интерфейс 135 сотовой сети/связи), и устройством пользовательского ввода (например, таким как камера 140). Элементы вычислительного устройства 100 могут взаимодействовать друг с другом через шину.
[0025] Вычислительное устройство 100 выполнено с возможностью исполнять операционную систему 120 и одну или более прикладных программ 115. Прикладные программы 115 могут быть приложениями (app), загруженными из магазина приложений, которые обладают ограниченным доступом к исходному вычислительному устройству 100. Одна такая программа может быть приложением 116, с функциональностью процессов 500, как описано на Фигуре 5.
[0026] Операционная система 120 является компьютерной программой для управления функционированием вычислительного устройства 100. Прикладные программы 115 являются исполняемыми программами, приспособленными исполняться на верхнем уровне операционной системы 120 для обеспечения различной функциональности, и могут включать в себя приложение, которое взаимодействует с облачным хранилищем, таким как приложение 116. Приложению 116, с функциональностью процессов 500, как описано на Фигуре 5, предоставляются права операционной системой 120 для осуществления доступа к ресурсу вычислительного устройства 100. Поэтому, так как приложение 116 обладает ограниченным доступом к исходному вычислительному устройству 100, приложение 116 взаимодействует с операционной системой 120 для доступа к компонентам вычислительного устройства 100. Покомпонентное изображение приведено на Фигуре 1 для изображения данного взаимодействия.
[0027] Как упомянуто ранее, приложение 116 взаимодействует с облачной службой 145 в качестве части своих функций, например, для обмена содержимым. Приложение 116 проходит через операционную систему 120, для взаимодействия с облачной службой 145 по сети; и операционная система 120 предоставляет приложению 116 доступ к сетевому интерфейсу, такому как сетевой/коммуникационный интерфейс 130 или интерфейс 135 сотовой сети/связи.
[0028] Приложение 116 управляет очередью выгрузки для передачи содержимого в облачную службу 145. Очередь выгрузки может быть структурой данных, хранящейся в ресурсе 117 данных приложения. Ресурс данных приложения может быть участком системы 125 хранения, который вычислительное устройство 100 назначает (через операционную систему 120) приложению 116, предоставляя приложению 116 возможность управлять тем, что происходит в том участке хранилища. Структура данных очереди выгрузки может быть таблицей базы данных, которая идентифицирует содержимое, подлежащее выгрузке в облачную службу 145. Таблица базы данных может включать в себя информацию, которая указывает то, является ли содержимое новым, отправленным или получило отказ. Например, указание того, что содержимое новое, может обозначать, что содержимое готово к выгрузке в облачную службу 145; указание того, что содержимое является отправленным, может обозначать то, что содержимое было успешно выгружено в облачную службу 145; а указание об отказе может обозначать, что была безуспешная попытка выгрузить содержимое в облачную службу 145.
[0029] Другая полезная информация, такая как информация, которая помогает приложению 116 управлять очередью выгрузки, может храниться в ресурсе 117 данных приложения. Например, ресурс 117 данных приложения может содержать информацию об ошибках и информацию о состоянии приостановки очереди выгрузки.
[0030] Приложение 116 взаимодействует с операционной системой 120 через один или более интерфейсы прикладного программирования (интерфейсы API). Дополнительное описание интерфейсов API приведено на Фигуре 7.
[0031] Через интерфейсы API операционная система 120 может предоставлять оповещающую функциональность. Приложение 116 может подписаться в операционной системе 120, что будет позволять приложению 116 принимать уведомления, относящиеся к оповещающим сигналам, на которые осуществлена подписка. Например, приложение 116 может подписаться на оповещающий об изменении сети сигнал. Затем, если состояние сетевого соединения изменяется, например, с пригодного сетевого соединения на непригодное сетевое соединение, приложение 116 принимает уведомление от операционной системы 120 об этом изменении, и приложение 116 может предпринять соответствующие действия. Дополнительно, приложение 116 может подписаться на оповещающий об изменении содержимого сигнал. Оповещающий об изменении содержимого сигнал может предназначаться для конкретной папки в частности или для множество папок (или где угодно на вычислительном устройстве 100) в целом. С помощью оповещающего об изменении содержимого сигнала, если содержимого изменяется в конкретной папке(ах) (в частности или в целом), приложение 116 принимает уведомление об изменении от операционной системы 120, и приложение 116 может предпринять соответствующие действия. Например, при подписке на оповещающий об изменении содержимого сигнал для каталога фотоснимков камеры, если камерой вычислительного устройства 100 делается фотография и сохраняется в каталоге фотоснимков камеры, приложение 116 принимает уведомление об изменении каталога фотоснимков камеры от операционной системы 120, и приложение 116 может предпринять соответствующие действия.
[0032] На Фигуре 2 показан примерный вариант реализации приложения, включающего в себя сокращение использования ресурсов приложением, как это описано в данном документе. Как показано на Фигуре 2, приложение 116 содержит модуль 210 управления очередью выгрузки, модуль 215 нового содержимого, модуль 220 обнаружения отказа и модуль 230 выгрузки. Дополнительно, приложение 116 может включать в себя другие модули, относящиеся к другой функциональности приложения 116.
[0033] Модуль 210 управления очередью выгрузки включает в себя функциональность, относящуюся к управлению очередью выгрузки для передачи содержимого, принятого в вычислительном устройстве, в облачную службу. Содержимое может включать в себя, но не ограничивается этим, сохраненные файлы, фотографии, снимки экрана и т.п., которые были сохранены в вычислительном устройстве. Например, модуль 210 управления очередью выгрузки принимает идентификацию нового содержимого от модуля 215 нового содержимого и включает новое содержимое в качестве записи в структуру данных очереди выгрузки. Дополнительно, модуль 210 управления очередью выгрузки может указать новое содержимое в качестве нового в очереди выгрузки, предоставляя модулю 230 выгрузки возможность знать, что новое содержимое готово к передаче в облачную службу. После приема сообщения о безуспешной выгрузке от модуля 230 выгрузки, модуль 210 управления очередью выгрузки может указать получившее отказ содержимое в качестве нового в очереди выгрузки, предоставляя модулю 230 выгрузки возможность знать, что получившее отказ содержимое снова готово к передаче в облачную службу. Кроме того, после приема сообщения об успешной выгрузке от модуля 230 выгрузки, модуль 210 управления очередью выгрузки может указать новое содержимое в качестве отправленного в очереди выгрузки.
[0034] Дополнительно, модуль 210 управления очередью выгрузки может перевести очередь выгрузки в состояние приостановки или состояние отмененной приостановки, например, сохраняя флаг или используя бит приостановки для указания того, что очередь выгрузки находится в состоянии приостановки. Если очередь выгрузки переводится в состояние приостановки, то никакой попытки выгрузки модулем 230 выгрузки не осуществляется, даже если новое содержимое указано модулем 210 управления очередью выгрузки. Более конкретно, если очередь выгрузки находится в состоянии приостановки, то модуль 230 выгрузки может не взаимодействовать с операционной системой для передачи нового содержимого в облачную службу. Дополнительно, если очередь выгрузки устанавливается в состояние отмененной приостановки, то модуль 230 выгрузки может взаимодействовать с операционной системой для передачи нового содержимого, указанного модулем 210 управления очередью выгрузки, в облачную службу. Преимущественно, модуль 230 выгрузки может полагаться на состояние приостановки или отмененной приостановки очереди выгрузки для определения действия.
[0035] Модуль 230 выгрузки включает в себя функциональность, относящуюся к передаче содержимого в службу облачного хранилища. Например, когда очередь выгрузки включает в себя содержимое, указанное в качестве нового модулем 210 управления очередью выгрузки, и находится в состоянии отмененной приостановки, то модуль 230 выгрузки взаимодействует с операционной системой вычислительного устройства для передачи нового содержимого в облачную службу с использованием сетевого ресурса вычислительного устройства. Например, операционная система может предоставить модулю 230 выгрузки возможность доступа к сетевому интерфейсу, такому как интерфейс беспроводной сети/связи или интерфейс сотовой сети/связи.
[0036] Дополнительно, приложение 116 может подписаться в операционной системе на оповещающие сигналы, что предоставляет приложению 116 возможность принимать уведомления, когда новое содержимое сохраняется на устройстве или если присутствует изменение сетевого соединения или другое изменение состояния. Модуль 215 нового содержимого включает в себя функциональность, относящуюся к обнаружению нового содержимого. Модуль 215 нового содержимого может обнаружить новое содержимое различными способами. Например, когда приложение 116 принимает уведомление, указывающее изменение содержимого, модуль 215 нового содержимого может осуществить доступ, через операционную систему, к системе хранения и идентифицировать новое содержимое, что предоставляет модулю 210 управления очередью выгрузки возможность включить новое содержимое в качестве записи в структуру данных очереди выгрузки.
[0037] Дополнительно, модуль 215 нового содержимого может также обнаружить новое содержимое посредством идентификации того, что устройство приняло ввод, в частности использование камеры, без приема уведомления от операционной системы. Модуль 215 нового содержимого может затем осуществить поиск нового содержимого в хранилище мультимедийного содержимого.
[0038] Модуль 220 обнаружения отказа включает в себя функциональность, относящуюся к обнаружению изменений в системе, в частности, изменение сетевого соединения или изменение состояния. Например, модуль 220 обнаружения отказа может обнаружить изменения сетевого соединения в отношении потери сетевого соединения и доступности сетевого соединения так, чтобы в ответ на обнаружение потери сетевого соединения модуль 220 обнаружения отказа взаимодействовал с модулем 210 управления очередью выгрузки, что предоставляет модулю 210 управления очередью выгрузки возможность установить очередь выгрузки в состояние приостановки, при которой не осуществлялось бы какой-либо попытки выгрузки, даже если указано новое содержимое. Дополнительно, модуль 210 управления очередью выгрузки может установить очередь выгрузки в состояние отмененной приостановки в ответ на обнаружение и сообщение модулем 220 обнаружения отказа о доступности сетевого соединения. Преимущественно, модуль 220 обнаружения отказа может функционировать за пределами процесса выгрузки.
[0039] В другом примере, если приложение 116 принимает указание отказа в отношении отказа в передаче содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу, приложение 116 может сохранить указание отказа. Указание отказа может указывать известную ошибку, такую как ошибка сетевого соединения. Модуль 220 обнаружения отказа может обнаружить известную ошибку, принятую в хранящемся указании отказа, и затем осуществить взаимодействие с операционной системой для подтверждения известной ошибки. Если известная ошибка подтверждена операционной системой, то модуль 220 обнаружения отказа может сообщить модулю 210 управления очередью выгрузки приостановить очередь выгрузки посредством перевода очереди выгрузки в состояние приостановки, а также указать получившее отказ содержимое в качестве нового в очереди выгрузки. Модуль 220 обнаружения отказа может также, через операционную систему, сообщить пользователю об ошибке через пользовательский интерфейс. Это может позволить пользователю устранить ошибку, и выгрузка содержимого может быть возобновлена посредством установки очереди выгрузки в состояние отмененной приостановки.
[0040] На Фигуре 3 показана примерная блок-схема последовательности операций настоящего способа обеспечения автоматической выгрузки содержимого без сокращения использования ресурсов. Как описано ранее, приложения могут иметь ограниченный доступ к исходной системе и, поэтому, иметь строгие ограничения на ресурсы. Как показано на Фигуре 3, процесс 300 является примером проблемы, которая может возникать вследствие этих ограничений.
[0041] В конкретном примере приложение облачного хранилища может функцию, которая выгружает содержимое в облачное хранилище пользователя. Данная функция может автоматически обнаруживать новое содержимое, такое как фотографии, снимки экрана и сохраненные файлы, и выгружать их в учетную запись пользователя облачного хранилища. Однако, если у пользователя нет сетевого соединения, которое приложение может использовать для выгрузки этих файлов, то такая функция может перестать работать должным образом. Любые файлы, которые обнаруживаются, добавляются в очередь выгрузки, и приложение пытается выгрузить эти файлы. Однако, поскольку вычислительное устройство не имеет рабочего сетевого соединения, то при выгрузке файла произойдет отказ. Таким образом, приложение может продолжать использовать заряд батареи, запоминающее устройство, систему CPU и другие системные ресурсы в попытке выгрузить файл, для которого гарантированно будет происходить отказ. Дополнительно, после получения файлом отказа, может быть возможно, что отказ не будет очищен и что файл не будет автоматически выгружен, когда устройство будет повторно подсоединено к сетевому соединению.
[0042] Более подробно, приложение может подписаться на один или более оповещающих сигналов (305) в операционной системе вычислительного устройства пользователя, что предоставляет приложению возможность принимать уведомления, относящиеся к оповещающим сигналам, на которые осуществлена подписка. Затем, когда делается фотография и сохраняется на устройстве, операционная система уведомляет приложение о том, что есть новая фотография (310). Когда приложение принимает уведомление о новой фотографии от операционной системы (315), приложение может обнаружить новую фотографию и добавить новую фотографию в очередь выгрузки (320) посредством указания новой фотографии в качестве новой в очереди выгрузки.
[0043] Как изображено на Фигуре 3, устройство может потерять сетевое соединение. Однако, поскольку новая фотография указана в качестве новой и поэтому готова к выгрузке, приложение попытается выгрузить новую фотографию посредством задействования сети, через API с операционной системой (325). Предпринятая выгрузка использует сетевые ресурсы устройства (330) и вследствие потери сетевого соединения, при попытке выгрузить новую фотографию происходит отказ. Операционная система указывает отказ выгрузки (335), и приложение принимает указание отказа (340). Так как приложение может принять указание отказа, не зная, почему попытка выгрузки оказалась безуспешной, то приложение не знает, что выгрузку не следует предпринимать снова. Поэтому, приложение пытается выгрузить новую фотографию (345) многократно. Количество раз, за которые приложение предпринимает попытку выгрузки, может быть основано на правилах политики. С каждой предпринятой выгрузкой приложение может использовать сетевые ресурсы устройства (350); и каждый раз при попытке выгрузки может происходить отказ, если сетевое соединение все еще нарушено. Дополнительно, каждый раз операционная система отправляет указание отказа в приложение без указания известной ошибки (355). Приложение принимает указание отказа (360), и после попытки выгрузки заданное количество раз согласно правилам политики, приложение указывает новую фотографию в качестве получившей отказ в очереди выгрузки (365) без предоставления причины касательно того, почему попытка выгрузки сопровождалась отказом и была безуспешной.
[0044] Дополнительно, в данном сценарии, в то время как функционирование сети все еще нарушено, может быть сделана другая фотография, и операционная система уведомляет приложение о новой фотографии (370). Данный процесс может продолжиться многократно, и каждый раз предпринятая выгрузка будет сопровождаться отказом при одновременном использовании сетевых ресурсов, потому что не было какого-либо указания ошибки.
[0045] На Фигурах 4A и 4B показаны примерные блок-схемы последовательностей операций способа обеспечения сокращения использования ресурсов; а на Фигуре 5 показана примерная блок-схема последовательности операций способа обеспечения сокращения использования ресурсов.
[0046] Согласно различным примерам, приложение может обнаружить, если нет никакого сетевого соединения, или если есть состояние отказа, и еще обнаруживать любое новое содержимое, как только поступает новое содержимое. Приложение может добавить новое содержимое в очередь выгрузки. Однако, приложение может не выгружать фактически это новое содержимое, потому что приложение знает, что выгрузка получит отказ, и данное знание используется для приостановки и отмены приостановки очереди выгрузки. Когда устройство получает пригодное сетевое соединение или возвращается в состояние успешного функционирования, приложение может обнаружить соединение и затем отменить приостановку очереди выгрузки, так чтобы снова могла начаться выгрузка нового содержимого в облачную службу. Преимущественно, приложение независимо может обнаружить и принять во внимание статус сетевого соединения или статус состояния отказа, и затем остановить выгрузку очереди выгрузки, пока нарушено сетевое соединение, или система содержит состояние отказа, таким образом сокращая использование ресурсов.
[0047] На Фигурах 4A и 4B приведено более подробное описание, изображающее то, как может быть выполнено сокращение использования ресурсов. На Фигуре 4A описан сценарий, при котором ошибка возможности сетевого соединения идентифицируется после того, как новое содержимое идентифицировано для очереди выгрузки; а на Фигуре 4B описан сценарий, при котором ошибка возможности сетевого соединения идентифицируется перед тем, как новое содержимое будет идентифицировано для очереди выгрузки.
[0048] Как изображено в сценариях на Фигурах 4A и 4B, оказывается возможно избежать ситуации, описанной в процессе 300 на Фигуре 3, в котором приложение может многократно повторять попытку выгружать содержимое.
[0049] Как показано на Фигуре 4A, приложение может подписаться на один или более оповещающих сигналов в операционной системе (402), чтобы быть уведомленным о том, когда добавляется новое содержимое или изменилось состояние сетевого соединения; или более конкретно, когда устройство, исполняющее приложение, потеряло или получило возможность соединения. Например, приложение MICROSOFT ONEDRIVE для операционной системы Windows использует два оповещающих сигнала для определения того, отсутствует ли сетевое соединение или присутствует новое содержимое. Эти оповещающие сигналы могут включать в себя оповещающий об изменении сети сигнал и оповещающий об изменении содержимого сигнал, доступные от операционной системы. Например, оповещающим об изменении сети сигналом может быть SystemTrigger (СистемныйОповещающийСигнал) с использованием типа NetworkStateChange (ИзменениеСостоянияСети) и отдельный отказ выгрузки файла, который сообщает о том, что отказ был обусловлен WebErrorStatus.OperationCanceled (СтатусОшибкиСети.ОтменаОперации). Оповещающие сигналы могут быть установлен так, чтобы задействоваться все время вместо того, что только когда имеется сетевое соединение. Поэтому, приложение может обнаружить содержимое и добавить содержимое в очередь выгрузки, даже когда сетевое соединение отсутствует. Если при выгрузке файла происходит отказ, и приложение принимает ошибку WebErrorStatus.OperationCanceled, то приложение проверит текущее состояние соединения и приостановит очередь выгрузки, если сетевое соединение отсутствует. Дополнительно, когда происходит уведомление приложения о том, что сетевое состояние изменилось (например, получено соединение Wi-Fi или потеряно информационное соединение), через оповещающий сигнал NetworkStateChange, приложение затем проверит, чтобы убедиться, имеется ли пригодное сетевое соединение.
[0050] После того, как приложение подписалось на один или более оповещающих сигналов (402) и когда делается фотография и сохраняется на устройстве, например в каталоге фотоснимков камеры, операционная система может уведомить приложение о новой фотографии (404). Приложение может принять уведомление о новой фотографии (406) и перейти к обнаружению новой фотографии и добавить новую фотографию в очередь выгрузки (408). Например, приложение может указать новую фотографию в качестве новой в очереди выгрузки и поэтому готовой к передаче в облачную службу.
[0051] Как только новая фотография указана в качестве новой в очереди выгрузки, приложение, через API с операционной системой, может задействовать сеть и попытаться выгрузить новую фотографию (410), что может использовать сетевые ресурсы устройства (412). Однако, если устройство теряет сетевое соединение, как изображено в данном сценарии, до попытки выгрузить новую фотографию (410), то при попытке выгрузки произойдет отказ. Если при выгрузке происходит отказ, то операционная система сообщает указание отказа (414) в приложение, которое может сообщить об отказе выгрузки нового содержимого, а также причину отказа (например, ошибкой какого типа был обусловлен отказ). Например, поскольку приложение подписано на оповещающий об изменении сети сигнал, то операционная система может сообщить о том, что отказ был обусловлен известной ошибкой сети, такой как WebErrorStatus.OperationCanceled.
[0052] В некоторых примерах, если приложение принимает указание отказа (416), то приложение может сохранить указание отказа сети. Приложение может затем обнаружить известную ошибку сети, указать фотографию как без ошибки и приостановить очередь выгрузки (418). Например, когда приложение принимает указание отказа от операционной системы, указание отказа может включать в себя тип ошибки, такой как ошибка сетевого соединения. Приложение может проверить тип принятой ошибки, и если ошибка является ошибкой сетевого соединения, то приложение может проверить текущее состояние сети посредством взаимодействия с операционной системой, и приостановить очередь выгрузки, если пригодное сетевое соединение отсутствует. Преимущественно, приложение может также поместить содержимое (например, выгрузку текущего содержимого), которое получило отказ, обратно в очередь выгрузки, указав получившее отказ содержимое в качестве нового. Поэтому, когда устройству восстанавливается сетевое соединение, то получившее ранее отказ содержимое будет указано в качестве нового и будет автоматически выгружено.
[0053] В различных примерах вместо приостановки очереди выгрузки после определения того, что пригодное сетевое соединение отсутствует, приложение может отправить сообщение об ошибке пользователю, указывающее то, что присутствует сетевая ошибка и что для устранения ошибки пользователь должен подключиться к сети. Затем, если пользователь подключается к сети, то приложение может снова попытаться выгрузить содержимое, посредством отменены приостановки очереди выгрузки.
[0054] Приостановка выгрузки включает в себя установку очереди выгрузки в состояние приостановки, при которой не будет осуществляться какой-либо попытки выгрузки, даже если указано новое содержимое. Отменена приостановки выгрузки включает в себя установку очереди выгрузки в состояние отмененной приостановки, при которой попытка выгрузки осуществляется, если указано новое содержимое. Приложение может установить очередь выгрузки в состояние приостановки различными способами. Например, приложение может сохранить бит приостановки или флаг, который указывает, приостановлена ли очередь выгрузки или ее приостановка отменена.
[0055] Как изображено в данном сценарии, пока соединение с сетью все еще отсутствует, устройством делается и сохраняется новая фотография. Операционная система затем уведомляет приложение о новой фотографии (420), и приложение принимает это уведомление о новой фотографии (422). Приложение может затем обнаружить новую фотографию и добавить новую фотографию в очередь выгрузки (424). В данном случае, поскольку очередь выгрузки приостановлена, то никакой попытки выгрузить новое содержимое приложением не предпринимается.
[0056] Когда устройству восстанавливается сетевое соединение, то операционная система может уведомить приложение об изменении сетевого соединения (426). Как описано ранее, когда приложение принимает уведомление об изменении сетевого соединения (428), например, через оповещающий об изменении сети сигнал, то приложение проверяет, чтобы убедиться, присутствует ли пригодное сетевое соединение посредством обнаружения статуса сетевого соединения (430), что может включать в себя взаимодействие с операционной системой для подтверждения пригодного сетевого соединения. Так как сетевое соединение было восстановлено, то приложение обнаруживает пригодное сетевое соединение и отменяет приостановку очереди выгрузки (432). Приложение, через API с операционной системой, может задействовать сеть и снова попытаться выгрузить новую фотографию в очереди выгрузки (434).
[0057] Как показано на Фигуре 4B, приложение может подписаться на один или более оповещающих сигналов в операционной системе (452), чтобы быть уведомленным о том, что есть новое содержимое или что изменилось состояние сетевого соединения, более конкретно, когда вычислительное устройство потеряло или получило возможность соединения. Если, после того, как приложение подписалось на один или более оповещающих сигналов (452), как изображено в данном сценарии, устройство теряет сетевое соединение, то операционная система уведомляет приложение об изменении сетевого соединения (454).
[0058] Приложение может принять уведомление об изменении сетевого соединения от операционной системы (456) и затем переходит к обнаружению статуса сетевого соединения (458) посредством взаимодействия с операционной системой для подтверждения того, что пригодное сетевое соединение отсутствует. В некоторых примерах, как описано ранее, после определения того, что пригодное сетевое соединение отсутствует, приложение может отправить сообщение об ошибке пользователю, указывающее то, что присутствует сетевая ошибка и как устранить эту ошибку. Затем, если пользователь устраняет ошибку и соединяется с сетью, приложение возобновляет выгрузку содержимого посредством установки очереди выгрузки в состояние отмененной приостановки.
[0059] Как только приложение обнаруживает, что сетевое соединение отсутствует, то приложение затем может приостановить очередь выгрузки (460), с использованием любого из ранее описанных способов. Когда очередь выгрузки находится в состоянии приостановки, никакие попытки выгрузки не осуществляются, даже если новое содержимое указано в очереди выгрузки.
[0060] Если, в то время пока сетевое соединение отсутствует, как изображено в данном сценарии, в системе сделается и сохранится фотография, то операционная система уведомит приложение о новой фотографии (462). Когда приложение принимает уведомление о новой фотографии (464), приложение может затем обнаружить новую фотографию и добавить новую фотографию в очередь выгрузки (466). Однако, так как очередь выгрузки находится в состоянии приостановки, то новая фотография может быть добавлена в очередь выгрузки, но никакой попытки выгрузить новую фотографию предприниматься не будет.
[0061] Когда устройству восстанавливается сетевое соединение, как изображено в данном сценарии, операционная система уведомляет приложение об изменении сетевого соединения (468), и приложение принимает уведомление об изменении сети (470). Как только приложение приняло уведомление об изменении сети (470), приложение обнаруживает статус сетевого соединения (472) посредством взаимодействия с операционной системой для подтверждения того, что присутствует пригодное сетевое соединение, и отмены приостановки очереди выгрузки (474). Как только очередь выгрузки находится в состоянии отмененной приостановки, приложение пытается выгрузить новую фотографию (476), которая была предварительно добавлена в очередь выгрузки.
[0062] Как показано на Фигуре 5, сокращение использования ресурсов может использоваться для множества ситуаций состояния отказа, в дополнение к потере сетевого соединения. В ходе процесса 500 приложение может обнаружить существование состояния отказа. Приложение может обнаружить состояние отказа различными способами. Например, приложение может подписаться на оповещающие сигналы, такие как оповещающий об изменении содержимого сигнал и оповещающий об изменении сети сигнал, как описано ранее. В качестве другого примера, приложение может иметь выполняющийся поток и перейти к обнаружению существования состояния отказа, не будучи сначала уведомленным операционной системой.
[0063] Если устройство входит в состояние отказа, при котором приложение подписалось принимать некоторый оповещающий сигнал от операционной системы, то операционная система может уведомить приложение об изменении состояния (505). В некоторых случаях, состояние отказа является состоянием, идентифицируемым приложением, и не является ошибкой устройства. Например, состояние отказа может возникнуть из-за превышения сервером (с которым приложение взаимодействует для выгрузки содержимого) квоты для конкретного пользователя. Например, если облачное хранилище ограничивает объем хранилища для каждого пользователя, например, хранением в 5 Гбайт, то пользователь мог заполнить выделенное ему пространство для хранения в облачном хранилище, что обуславливает состояние отказа. Другим примером того, когда состояние отказа может возникнуть, является истечение срока действия пароля пользователя к облачному хранилищу.
[0064] Приложение может принять уведомление об изменении состояния от операционной системы (510) и затем обнаружить статус изменения состояния (515) посредством взаимодействия с операционной системой для подтверждения состояния отказа. Как только приложение обнаруживает, что присутствует состояние отказа, то приложение затем может приостановить очередь выгрузки (520) любым из ранее описанных способов. Когда очередь выгрузки находится в состоянии приостановки, то никаких попыток выгрузки не осуществляется, даже если новое содержимое указано в очереди выгрузки.
[0065] В различных примерах, после приема уведомления об изменении состояния от операционной системы, подтверждения состояние отказа и установки очереди выгрузки в состояние приостановки, приложение может передать сообщение об ошибке пользователю через пользовательский интерфейс. Сообщение об ошибке может указать тип состояния отказа и то, как устранить состояние отказа. Если пользователь решает устранить состояние отказа, приложение может возобновить взаимодействие с операционной системой для передачи содержимое очереди выгрузки посредством установки очереди выгрузки в состояние отмененной приостановки.
[0066] Как изображено в данном сценарии, в то время пока устройство все еще находится в состоянии отказа, в системе может быть создано и сохранено новое содержимое. Новое содержимое может включать в себя, но не ограничивается этим, сохраненный файл, фотографию, снимок экрана или что-либо им подобное. Операционная система может затем уведомить приложение о новом содержимом (525). Когда приложение принимает уведомление о новом содержимом (530), то затем приложение может обнаружить новое содержимое и добавить новое содержимое в очередь выгрузки (535) и проверить состояние приостановки очереди выгрузки (540). Так как очередь выгрузки находится в состоянии приостановки, то новое содержимое добавляется в очередь выгрузки, но никакой попытки выгрузить новую фотографию не происходит.
[0067] Когда устройство возвращается к состоянию успешного функционирования, как изображено в данном сценарии, операционная система может уведомить приложение об изменении состояния (545), и приложение может принять уведомление об изменении состояния (550). Как только приложение принимает уведомление об изменении состояния (550), приложение может обнаружить статус изменения состояния (555) посредством взаимодействия с операционной системой для подтверждения состояния успешного функционирования и затем отменить приостановку очереди выгрузки (560). Как только очередь выгрузки оказалась в состоянии отмененной приостановки, приложение, через API с операционной системой, может задействовать сеть и попытаться выгрузить новое содержимое (565), ранее добавленное в очередь выгрузки.
[0068] На Фигуре 6 показан примерный пользовательский интерфейс приложения, которое включает в себя сокращение использования ресурсов приложением. Как показано на Фигуре 6, пользователь может взаимодействовать с вычислительным устройством 600, выполняющим приложение, такое как приложение 116, описанное на Фигуре 1, через пользовательский интерфейс (UI), такой как UI 602, для ввода пользовательского ввода и приема отображаемых выводимых данных.
[0069] Вычислительное устройство (например, вычислительное устройство 600) выполнено с возможностью принимать ввод от пользователя через, например, клавиатуру, компьютерную мышь, сенсорную площадка, сенсорная панель, сенсорный экран, микрофон, камеру, средство отслеживания глаз или другое устройство ввода. UI предоставляет возможность пользователю взаимодействовать с различными приложениями, исполняющимися на вычислительном устройстве 600 или отображаемыми через него. В целом, UI выполнен так, чтобы пользователь мог легко взаимодействовать с функциональностью приложения. Например, пользователь может просто выбрать (через, например, прикосновение, нажатие, жест или голос) возможный вариант (например, команду 620 отмены или команду 615 параметров настройки сети) внутри UI для осуществления действия вычислительным устройством 600.
[0070] Как изображено, приложение (например, приложение 116) предоставляют пользователю UI (например, UI 610), который сообщает пользователю о состоянии отказа, в частности, об отсутствии сетевого соединения или заполнения облачного хранилища. Пользователь, на основе состояния отказа, может решить устранить отказ. Например, в изображенном случае отказа сетевого соединения, вычислительное устройство 600, выполняющее приложение, может предоставить UI 610 пользователю. UI 610 может отобразить пользователю сообщение о том, что при попытке выгрузки произошел отказ из-за ошибки сети, а также то, как устранить отказ. Например, если вычислительное устройство 600 теряет сетевое соединение, как изображено на Фигуре 6, когда пользователь делает фотографии с помощью камеры вычислительного устройства 600 и просматривает фотографии в разделе «Недавние фотографии» 605, таком как каталог фотоснимков камеры, в UI 602, то пользователю может быть предоставлен UI 610, отображающий сообщение 625 об ошибке. Сообщение 625 об ошибке может констатировать следующее «Ошибка выгрузки фотографий: отсутствует сетевое соединение» и «Чтобы продолжить выгрузку: подключитесь к сети».
[0071] В некоторых случаях, наряду с сообщением 625 об ошибке, может быть предоставлена команда 615 параметров настройки сети для позволения пользователю изменить параметры настройки сети вычислительного устройства 600, в частности, подключиться к Wi-Fi или изменить настройки, чтобы позволить приложению выгрузить содержимое в очереди выгрузки. Если пользователь устраняет потерю сетевого соединения, то приложения возобновляет выгрузку содержимого посредством установки очереди выгрузки в состояние отмененной приостановки. В некоторых случаях, если пользователь не хочет изменять параметры настройки сети, то пользователь может выбрать команду 620 отмены, и очередь выгрузки останется приостановкой до получения вычислительным устройством 600 сетевого соединения. Несмотря на то, что изображенный UI 602 показывает UI 610 сообщения об ошибке, блокирующий UI 602 приложения и требующий взаимодействия с пользователем, UI 610 сообщения об ошибке может быть пассивным UI, который используется для сообщения пользователю о том, что выгрузка приостановлена и/или что присутствует ошибка. В некоторых вариантах реализации пассивного UI в пассивном UI может быть включена гиперссылка для предложения места, в котором пользователь может устранить ошибку. Конечно, гиперссылка может также быть включена и в активных пользовательских интерфейсах (UI).
[0072] На Фигуре 7 показана блок-схема, изображающая компоненты вычислительного устройства, которые могут использоваться в некоторых вариантах реализации, описанных в данном документе. Система 700 может быть реализована внутри одного вычислительного устройства или распределена по множеству вычислительных устройств или подсистем, которые совместно действуют при исполнении программных инструкций. Система 700 может использоваться для реализации множества вычислительных устройств, включающих в себя, но не ограничивающихся этим, персональный компьютер, планшетный компьютер, устройство для чтения, мобильное устройство, персональный цифровой помощник, носимый микрокомпьютер, смартфон, портативный компьютер (ноутбук или нетбук), игровое устройство или игровую приставку (консоль), настольный компьютер или умный телевизор. Соответственно, для реализации конкретного вычислительного устройства может быть встроено большее или меньшее количество элементов, описанных в отношении системы 700.
[0073] Система 700, например, включает в себя процессор 705, который обрабатывает данные согласно инструкциям одной или более прикладных программ 710, взаимодействующих с операционной системой (OS) 715 устройства. Примеры процессоров 705 включают в себя центральные блоки обработки общего назначения, специализированные процессоры и логические устройства, а также устройства обработки любого другого типа, их сочетания или разновидности.
[0074] Прикладные программы 710, OS 715 и другое программное обеспечение могут быть загружены в систему 720 хранения и сохранены в ней. Операционные системы 715 устройства в целом управляют и координируют функции различных компонентов в вычислительном устройстве, обеспечивая более простой способ соединения приложений с интерфейсами более низкого уровня, такими как сетевой интерфейс. Неограничивающие примеры операционных систем включают в себя WINDOWS от Microsoft Corp., IOS от Apple, Inc., ANDROID OS от Google, Inc., WINDOWS RT от Microsoft и разновидность Ubuntu ОС Linux от Canonical.
[0075] Следует отметить, что ОС 715 может быть реализована как непосредственно на вычислительном устройстве, так и на уровнях виртуализации программного обеспечения, функционирующих поверх собственной ОС Устройства. Слои виртуализированной ОС, хотя и не изображены на Фигуре 7, могут рассматриваться как дополнительные вложенные группировки в пространстве OS 715, каждая из которых содержит ОС, прикладные программы и интерфейсы API. Прикладные программы 710 могут осуществлять доступ к конкретным функциональным возможностям системы 700 через интерфейсы API.
[0076] API является интерфейсом, реализованным компонентом программного кода или компонентом аппаратного обеспечения (в дальнейшем «реализующим API компонентом»), который позволяет различным компонентам программного кода или компонентам аппаратного обеспечения (в дальнейшем «вызывающим API компонентом») осуществлять доступ и использовать одну или более функции, способов, процедур, структур данных, классов и/или других служб, предоставляемых реализующим API компонентом. API может задавать один или более параметров, которые передаются между вызывающим API компонентом и реализующим API компонентом.
[0077] API позволяет разработчику вызывающего API компонента (который может быть сторонним разработчиком) использовать конкретные функции, предоставляемые реализующим API компонентом. Может быть один вызывающий API компонент или может быть более одного такого компонента. API может быть интерфейсом с исходным кодом, который компьютерная система или программная библиотека предоставляет для поддержки запросов к службам от приложения. Операционная система может иметь множество API, чтобы приложения, выполняющиеся в операционной системе, могли вызывать один или более из этих API, а служба (например, программная библиотека) может иметь множество API, чтобы приложение, которое использует службу, могло вызывать один или более из этих API. API может быть задан с точки зрения языка программирования, который может быть интерпретировать или скомпилирован при сборке приложения.
[0078] В некоторых вариантах реализации реализующий API компонент может предоставлять более одного API, каждый из которых предоставляет различное представление или разные аспекты, которые обеспечивают доступ к различным аспектам функциональности, реализованной реализующим API компонентом. Например, один API реализующего API компонента может предоставлять первый набор функций и может быть предоставлен сторонним разработчикам, а другой API реализующего API компонента может быть скрыт (не представлен) и предоставлять поднабор первого набора функций, а также предоставлять другой набор функций, таких как функции тестирования или отладки, которых нет в первом наборе функций. В других случаях реализующий API компонент может сам вызывать один или более других компонентов через базовый API и, таким образом, быть как вызывающим API компонентом, так и реализующим API компонентом.
[0079] API определяет язык и параметры, используемые вызывающими API компонентами при осуществлении доступа и использовании конкретных функций реализующего API компонента. Например, вызывающий API компонент осуществляет доступ к указанным функциям реализующего API компонента посредством одного или более вызовов или вызовов API (реализованных, например, посредством вызовов функций или методов), предоставляемых API, и передает данные и управляющую информацию с использованием параметров через API вызовы или привлечения. Реализующий API компонент может возвращать значение через API в ответ на вызов API от вызывающего API компонента. Несмотря на то, что API определяет синтаксис и результат вызова API (например, как задействовать вызов API и что делает вызов API), API может не раскрывать того, как вызов API выполняет функцию, указанную в вызове API. Различные вызовы API передаются через один или более интерфейсов прикладного программирования между вызывающим (вызывающим API компонентом) и реализующим API компонентом. Передача вызовов API может включать в себя выдачу, инициирование, задействование, вызов, прием, возврат или ответ на вызовы функций или сообщения; другими словами, передача может описывать действия либо от вызывающего API-компонента, либо API-реализующего компонента. Вызовы функций или другие задействования API могут отправлять или принимать один или более параметров через список параметров или другую структуру.
[0080] Кроме того, типы данных или классы могут быть предоставляться API и реализовываться реализующим API компонентом. Таким образом, вызывающий API компонент может объявить переменные, использовать указатели, использовать или создавать значения констант таких типов или классов посредством использования определений, предоставляемых в API.
[0081] Как правило, API можно использовать для осуществления доступа к услуге или данным, предоставляемым реализующим API компонентом, или для инициирования выполнения операции или вычисления, предоставляемого реализующим API компонентом. В качестве примера, реализующий API компонент и вызывающий API компонент могут быть любым одним из операционной системы, библиотеки, драйвера устройства, API, прикладной программы или другого модуля (следует понимать, что реализующий API компонент и вызывающий API компонент могут быть модулями одинакового типа или отличного друг от друга типа). Реализующие API компоненты могут в некоторых случаях быть реализованы по меньшей мере частично в встроенном микропрограммном обеспечении, микрокоде или другой аппаратной логике. В некоторых случаях API может позволить клиентской программе использовать службы, предоставляемые библиотекой комплекта разработчика программного обеспечения (Software Development Kit, SDK). В других случаях приложение или другая клиентская программа могут использовать API, предоставляемый средой разработки приложения (Application Framework). В данном случае, прикладная или клиентская программа может включать в себя вызовы функций или методов, предоставляемых SDK и предоставляемых API, или использовать типы данных или объекты, определенные в SDK и предоставляемые API. Среда разработки приложения может, например, предоставлять основной цикл событий для программы, которая реагирует на различные события, определенные этой средой. API позволяет приложению указать события и ответы на события с использованием среды разработки приложения. В некоторых вариантах реализации вызов API может сообщать приложению о возможностях или состоянии аппаратного устройства, включая те, которые связаны с такими аспектами, как возможности и состояние ввода, возможности и состояние вывода, возможности обработки, состояние питания, емкость и состояние памяти, возможности осуществления связи и т. д., и API может быть частично реализован посредством встроенного микропрограммного обеспечения, микрокода или другой логики низкого уровня, которая частично исполняется в аппаратном компоненте.
[0082] Вызывающий API компонент может быть локальным компонентом (т.е. в той же самой системе обработки данных, что и реализующий API компонент) или удаленным компонентом (т.е. в другой системе обработки данных по отношению к реализующему API компоненту), который взаимодействует с реализующим API компонентом через API по сети (например, сети 155). Следует понимать, что реализующий API компонент также может действовать в качестве вызывающего API компонента (т.е. он может осуществлять вызовы API для API, предоставляемого другим реализующим API компонентом), и вызывающий API компонент также может действовать в качестве реализующего API компонента посредством реализации API, который предоставляется другому вызывающему API компоненту.
[0083] API может позволить множеству вызывающим API компонентам, написанным на разных языках программирования, взаимодействовать с реализующим API компонентом (таким образом, API может включать в себя функции трансляции вызовов и ответов между реализующим API компонентом и вызывающим API компонентом); однако API может быть реализован с точки зрения конкретного языка программирования. Вызывающий API компонент может в некоторых случаях вызывать интерфейсы API от разных поставщиков, например, набор интерфейсов API от поставщика операционной системы и другой набор интерфейсов API от поставщика подключаемых модулей, и еще один набор интерфейсов API от другого поставщика (например, поставщика библиотеки программного обеспечения) или создателя другого набора интерфейсов API.
[0084] API, реализующий API компонент и вызывающий API компонент могут быть храниться в системе 720 хранения.
[0085] Система 720 хранения может содержать любые машиночитаемые носители хранения информации, считываемые процессором 705 и выполненные с возможностью хранения программного обеспечения (например, прикладных программ 710 и OS 715).
[0086] Система 720 хранения может включать в себя съемные и несъемные носители кратковременного и долговременного хранения, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Примеры носителей хранения данных включают в себя запоминающее устройство с произвольным доступом, постоянное запоминающее устройство, магнитные диски, оптические диски, флэш-память, виртуальную память и не виртуальную память, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства или любые другие подходящие носители хранения информации. Запоминающее устройство ни в коем случае не является распространяемым сигналом. В дополнение к носителю хранения информации, в некоторых вариантах реализации система 720 хранения также может включать в себя среду связи, по которой программное обеспечение может передаваться внутри или снаружи. Система 720 хранения может быть реализована как одно устройство хранения, но также может быть реализована на множестве устройств хранения или подсистем, расположенных рядом или распределенных относительно друг друга. Система 720 хранения может содержать дополнительные элементы, такие как контроллер, способный взаимодействовать с процессором 705.
[0087] В различных вариантах реализации данные/информация, сохраненные через систему 700, могут включать в себя кэш-памяти данных, такой как кэш-память 725, хранящийся локально на устройстве, или данные может храниться на любом количестве носителей хранения информации, к которым устройство может осуществлять доступ через сетевой/коммуникационный интерфейс 735 или через проводное соединение между устройством и отдельным вычислительным устройством, относящемся к устройству, например, серверным компьютером в распределенной вычислительной сети, такой как Интернет. Как должно быть понятно, к таким данным/информации можно осуществлять доступ посредством устройства через сетевой/коммуникационный интерфейс 735 или распределенную вычислительную сеть. Схожим образом, такие данные/информация могут быть легко переноситься между вычислительными устройствами для хранения и использования в соответствии с хорошо известными средствами переноса и хранения данных/информации, включающих в себя электронную почту и совместные системы обмена данными/информацией.
[0088] Программное обеспечение может быть реализовано в программных инструкциях и наряду с другими функциями может, при его исполнении системой 700 в целом или процессором 705 в частности, предписывать системе 700 или процессору 705 функционировать так, как описано в данном документе. Программное обеспечение может включать в себя дополнительные процессы, программы или компоненты, такие как программное обеспечение операционной системы или другое прикладное программное обеспечение. Программное обеспечение может также содержать встроенное микропрограммное обеспечение или некоторую другую форму машиночитаемых инструкций обработки, исполняемых процессором 705.
[0089] В целом, программное обеспечение, при его загрузке в процессор 705 и исполнении, может полностью преобразовать вычислительную систему 700 из вычислительной системы общего назначения в вычислительную систему специального назначения, настроенную для содействия сокращению использования ресурсов, описанному в данном документе для каждого варианта реализации. Действительно, кодирование программного обеспечения в системе 720 хранения может преобразовать физическую структуру системы 720 хранения. Конкретное преобразование физической структуры может зависеть от различных факторов в различных вариантах реализации данного описания. Примеры таких факторов могут включать в себя, но не ограничиваются этим, технологию, используемую для реализации носителей хранения информации системы 720 хранения, и то, характеризуются ли компьютерные носители хранения информации как первичное или вторичное хранилище.
[0090] Например, если компьютерные носители хранения информации реализуются в качестве основанного на полупроводниках запоминающего устройства, программное обеспечение может преобразовывать физическое состояние полупроводникового запоминающего устройства, когда программа в нем закодирована, в частности, посредством преобразования состояния транзисторов, конденсаторов или других отдельных схемных элементов, составляющих полупроводниковое запоминающее устройство. Схожее преобразование может происходить по отношению к магнитным или оптическим носителям. Возможны и другие преобразования физических сред, без отступления от объема настоящего описания, с упомянутыми ранее примерами, приведенными только для облегчения данного обсуждения.
[0091] Альтернативно или в дополнение, описанные в данном документе функциональные возможности, способы и процессы могут быть реализованы, по меньшей мере частично, одним или более модулями аппаратного обеспечения (или логическими компонентами). Например, модули аппаратного обеспечения могут включать в себя, но не ограничиваются этим, кристаллы интегральных микросхем для конкретных приложений (ASIC), программируемые вентильные матрицы (FPGA), системы «система на кристалле» (SoC), сложные программируемые логические устройства (CPLD) и другие программируемые логические устройства, известные в настоящее время или разработанные позднее. Когда модули аппаратного обеспечения активированы, то модули аппаратного обеспечения выполняют функциональность, способы и процессы, включенные в эти модули аппаратного обеспечения.
[0092] Следует отметить, что многие элементы системы 700 могут быть включены в устройство «система на кристалле» (SoC). Эти элементы могут включать в себя, но не ограничиваются этим, процессор 705, сетевой/коммуникационный интерфейс 735, звуковой интерфейс 740, видеоинтерфейс 745 и даже элементы системы 720 хранения.
[0093] Сетевой/коммуникационный интерфейс 735 может включать в себя коммуникационные соединения и устройства, которые позволяют осуществлять связь с другими вычислительными системами через одну или более сетей связи (не показаны). Примеры соединений и устройств, которые совместно обеспечивают межсистемную связь, могут включать в себя сетевые интерфейсные карты, антенны, усилители мощности, радиочастотные схемы, приемопередатчики и другие схемы связи. Соединения и устройства могут осуществлять связь через среды связи (такие как металл, стекло, воздух или любые другие подходящие среды связи) для обмена сообщениями с другими вычислительными системами или сетями систем. Управление передачами в сетевой/коммуникационный интерфейс 735 и из него осуществляется в OS 715, которая при необходимости сообщает приложению и интерфейсам API о событиях связи.
[0094] Интерфейсные устройства 750 могут включать в себя устройства ввода, такие как камера 755, компьютерная мышь (не показана), сенсорная панель (не показана), клавиатура (не показана), микрофон (не показан), сенсорное устройство (не показано) для приема жеста касания от пользователя, устройство ввода движения (не показано) для обнаружения жестов без касания и других движений пользователем, и устройства ввода других типов и относящиеся к ним элементы обработки, выполненные с возможностью принимать пользовательский ввод.
[0095] Интерфейсные устройства 750 могут также включать в себя устройства вывода, такие как экраны отображения (не показаны), громкоговорители (не показаны), тактильные устройства для тактильной обратной связи и устройства вывода других типов. В конкретных случаях устройства ввода и вывода могут быть объединены в одном устройстве, таком как дисплей с сенсорным экраном, который как отображает изображения, так и принимает ввод от пользователя с помощью жестов касания. Визуальный вывод может быть изображен на дисплее множеством способов, представляя элементы графического пользовательского интерфейса, текст, изображения, видео, уведомления, виртуальные кнопки, виртуальные клавиатуры или информацию любого другого типа, который можно изобразить в визуальной форме. Возможны и другие разновидности пользовательского интерфейса. Пользовательский интерфейс 750 также может включать в себя соответствующее программное обеспечение пользовательского интерфейса, исполняемое в OS 715 для поддержки различных пользовательских устройств ввода и вывода. Такое программное обеспечение помогает OS в передаче аппаратных событий пользовательского интерфейса в прикладные программы 710 с использованием заданных механизмов.
[0096] Должно быть понято, что реализующая любой мобильный телефон или настольное вычислительное устройство система 700 может иметь дополнительные функции или функциональность и не ограничивается вариантами конфигурации, описанными в данном документе.
[0097] Конкретные аспекты настоящего изобретения обеспечивают следующие неограничивающие варианты осуществления.
[0098] Пример 1. Способ сокращения использования ресурсов приложением, выполняющимся на вычислительном устройстве, содержащий: управление, в вычислительном устройстве, очередью выгрузки для передачи содержимого, принятого в вычислительном устройстве, в облачную службу; проверку состояния очереди выгрузки, включая то, указана ли очередь выгрузки находящейся в состоянии отмененной приостановки или состоянии приостановки; после проверки состояния очереди выгрузки и пока очередь выгрузки указана находящейся в состоянии отмененной приостановки, осуществление, в вычислительном устройстве, процесс выгрузки посредством передачи содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу с использованием сетевого ресурса вычислительного устройства; и обнаружение изменений сетевого соединения в отношении потери сетевого соединения и доступности сетевого соединения, при этом в ответ на обнаружение потери сетевого соединения, очередь выгрузки устанавливается в состояние приостановки. Обнаружение сетевого соединения происходит вне процесса выгрузки содержимого в ответ на новое содержимое в очереди выгрузки.
[0099] Пример 2. Способ согласно примеру 1, дополнительно содержащий: обнаружение нового содержимого; в ответ на обнаружение нового содержимого, указание нового содержимого в качестве нового в очереди выгрузки; если очередь выгрузки находится в состоянии приостановки, не взаимодействие с операционной системой для передачи нового содержимого в облачную службу; и если очередь выгрузки находится в состоянии отмененной приостановки, взаимодействие с операционной системой для передачи нового содержимого в облачную службу.
[0100] Пример 3. Способ согласно примеру 1 или 2, в котором обнаружение изменений сети содержит: прием указания отказа в отношении отказа в передаче содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу, при этом указание отказа указывает ошибку сетевого соединения.
[0101] Пример 4. Способ согласно любому из примеров 1-3, дополнительно содержащий подписку в операционной системе на прием оповещающего сигнала, уведомляющего об изменении сетевого соединения; при этом обнаружение изменений сети содержит прием уведомления об изменении сетевого соединения.
[0102] Пример 5. Способ согласно любому из примеров 1-4, в котором управление очередью выгрузки содержит: в ответ на обнаружение нового содержимого, указание нового содержимого в качестве нового в очереди выгрузки; и если новое содержимое успешно передается в облачную службу, указание нового содержимое в качестве отправленного в очереди выгрузки.
[0103] Пример 6. Способ согласно любому из примеров 1-5, в котором в ответ на обнаружение доступности сетевого соединения, очередь выгрузки устанавливается в состояние отмененной приостановки.
[0104] Пример 7. Способ согласно любому из примеров 1-6, в котором содержимое содержит по меньшей мере одно из фотографии, снимка экрана и сохраненного файла.
[0105] Пример 8. Система, содержащая: систему обработки; один или более машиночитаемых носителей хранения информации; и очередь выгрузки, хранящуюся на упомянутых одном или более машиночитаемых носителях хранения информации; операционную систему, хранящуюся на упомянутых одном или более машиночитаемых носителях хранения информации; приложение, воплощенное в программных инструкциях, хранящихся на упомянутых одном или более машиночитаемых носителях хранения информации, которые, при их исполнении системой обработки, предписывают системе обработки по меньшей мере: управлять очередью выгрузки для передачи содержимого в облачную службу; проверять состояние очереди выгрузки, включая то, указана ли очередь выгрузки находящейся в состоянии отмененной приостановки или состоянии приостановки; после проверки состояния очереди выгрузки и пока очередь выгрузки указана находящейся в состоянии отмененной приостановки, осуществлять процесс выгрузки посредством передачи содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу с использованием сетевого ресурса вычислительного устройства; и обнаруживать изменения состояния в отношении состояния отказа и состояния успешного функционирования, при этом в ответ на обнаружение состояния отказа, очередь выгрузки устанавливается в состояние приостановки. Обнаружение сетевого соединения происходит вне процесса выгрузки содержимого в ответ на новое содержимое в очереди выгрузки.
[0106] Пример 9. Система согласно примеру 8, в которой программные инструкции, хранящиеся на упомянутых одном или более машиночитаемых носителях хранения информации, дополнительно предписывают системе обработки: в ответ на обнаружение нового содержимого, указывать новое содержимое в качестве нового в очереди выгрузки; если очередь выгрузки находится в состоянии приостановки, не взаимодействовать с операционной системой для передачи нового содержимого в облачную службу; и если очередь выгрузки находится в состоянии отмененной приостановки, взаимодействовать с операционной системой для передачи нового содержимого в облачную службу.
[0107] Пример 10. Система согласно примеру 8 или 9, в которой инструкции, которые предписывают системе обработки обнаруживать изменения состояния в отношении состояния отказа и состояния успешного функционирования, предписывают системе обработки по меньшей мере: принимать указание отказа в отношении отказа в передаче содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу, при этом указание отказа указывает известную ошибку.
[0108] Пример 11. Система согласно любому из примеров 8-10, в которой инструкции, которые предписывают системе обработки обнаруживать изменения состояния в отношении состояния отказа и состояния успешного функционирования, предписывают системе обработки по меньшей мере: подписываться в операционной системе на прием оповещающего сигнала, уведомляющего об изменении состояния; и принимать уведомление об изменении состояния.
[0109] Пример 12. Система согласно любому из примеров 8-11, в которой инструкции, которые предписывают системе обработки управлять очередью выгрузки, предписывают системе обработки по меньшей мере: в ответ на обнаружение нового содержимого, указывать новое содержимое в качестве нового в очереди выгрузки; и если новое содержимое успешно передается в облачную службу, указывать новое содержимое в качестве отправленного в очереди выгрузки.
[0110] Пример 13. Система согласно любому из примеров 8-12, в которой в ответ на обнаружение состояния успешного функционирования, очередь выгрузки устанавливается в состояние отмененной приостановки.
[0111] Пример 14. Система согласно любому из примеров 8-13, в которой содержимое содержит по меньшей мере одно из фотографии, снимка экрана и сохраненного файла.
[0112] Пример 15. Один или более машиночитаемых носителей хранения информации, на которых хранится приложение, которое при его исполнении системой обработки, предписывает системе обработки осуществлять способ, содержащий: управление, в вычислительном устройстве, очередью выгрузкой для передачи содержимого, принятого в вычислительном устройстве, в облачную службу; проверку состояния очереди выгрузки, включая то, указана ли очередь выгрузки находящейся в состоянии отмененной приостановки или состоянии приостановки; после проверки состояния очереди выгрузки и пока очередь выгрузки указана находящейся в состоянии отмененной приостановки, осуществление, в вычислительном устройстве, процесса выгрузки посредством передачи содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу с использованием сетевого ресурса вычислительного устройства; и обнаружение изменений сетевого соединения в отношении потери сетевого соединения и доступности сетевого соединения, при этом в ответ на обнаружение потери сетевого соединения, очередь выгрузки устанавливается в состояние приостановки. Обнаружение сетевого соединения происходит вне процесса выгрузки содержимого в ответ на новое содержимое в очереди выгрузки.
[0113] Пример 16. Носители согласно примеру 15, дополнительно содержащие: обнаружение нового содержимого; в ответ на обнаружение нового содержимого, указание нового содержимого в качестве нового в очереди выгрузки; если очередь выгрузки находится в состоянии приостановки, не взаимодействие с операционной системой для передачи нового содержимого в облачную службу; и если очередь выгрузки находится в состоянии отмененной приостановки, взаимодействие с операционной системой для передачи нового содержимого в облачную службу.
[0114] Пример 17. Носители согласно примеру 15 или 16, при этом обнаружение изменений сети содержит: прием указания отказа в отношении отказа в передаче содержимого, указанного в качестве нового в очереди выгрузки, в облачную службу, при этом указание отказа указывает ошибку сетевого соединения.
[0115] Пример 18. Носители согласно любому из примеров 15-17, при этом обнаружение изменений сети содержит: подписку в операционной системе на прием оповещающего сигнала, уведомляющего об изменении сетевого соединения; и прием уведомления об изменении сетевого соединения.
[0116] Пример 19. Носители согласно любому из примеров 15-18, при этом управление очередью выгрузки содержит: в ответ на обнаружение нового содержимого, указание нового содержимого в качестве нового в очереди выгрузки; и если новое содержимое успешно передается в облачную службу, указание нового содержимого в качестве отправленного в очереди выгрузки.
[0117] Пример 20. Носители согласно любому из примеров 15-19, при этом в ответ на обнаружение доступности сетевого соединения, очередь выгрузки устанавливается в состояние отмененной приостановки.
[0118] Следует понимать, что примеры и варианты осуществления, описанные в данном документе, предназначены только для иллюстративных целей, и что различные модификации или изменения в их свете могут предполагаться специалистам в данной области техники и должны быть включены в сущность и сферу применения данной заявки.
[0119] Несмотря на то что объект изобретения был описан на языке, характерном для структурных признаков и/или действий, следует понимать, что объекту изобретения, определенный в прилагаемой формуле изобретения, не обязательно ограничиваться конкретными признаками или действиями, описанными выше. Скорее, конкретные признаки и действия, описанные выше, раскрываются в качестве примеров реализации пунктов формулы изобретения, и подразумевается, что другие эквивалентные признаки и действия заключены в объем в формулы изобретения.