Исходный код Android функционирует с особыми именами - PullRequest
1 голос
/ 19 марта 2012

Многие функции в исходном коде Android имеют своеобразные имена, оканчивающиеся на LI, LPw, LPr. Кто-нибудь знает, что означают эти аббревиатуры, так как было бы более полезно понять имя функции и ее назначение.

Пример:

PackageManagerService.installPackageLI ()
PackageManagerService.updatePermissionsLPw ()
Settings.peekPackageLPr ()

Спасибо.

Ответы [ 4 ]

1 голос
/ 19 марта 2012

Посмотрите на строку 234:

234     // Lock for state used when installing and doing other long running
235     // operations.  Methods that must be called with this lock held have
236     // the prefix "LI".
237     final Object mInstallLock = new Object();
1 голос
/ 19 марта 2012

Похоже, вы смотрите на какой-то странный исходный код.Вы знаете grepcode ?

0 голосов
/ 19 февраля 2018

Уже принят ответ, но я предполагаю, что приведенная ниже информация будет полезна для других пользователей.Просто пытался понять суффиксы LPr, LPw, LI и LIF и нашел следующее в документации:

Внутренне есть две важные блокировки:

1) **mPackages** is used to guard all in-memory parsed package details
   and other related state. It is a fine-grained lock that should only be 
   held momentarily, as it's one of the most contended locks in the system.

2) **mInstallLock** is used to guard all installd access, whose
   operations typically involve heavy lifting of application data on disk. 
   Since installd is single-threaded, and it's operations can often be slow,
   this lock should never be acquired while already holding mPackages . 
   Conversely, it's safe to acquire mPackages momentarily while already
   holding mInstallLock.

Many internal methods rely on the caller to hold the appropriate locks, and
this contract is expressed through method name suffixes:

fooLI():  the caller must hold mInstallLock
fooLIF(): the caller must hold mInstallLock and the package being modified 
          must be frozen
fooLPr(): the caller must hold mPackages for reading
fooLPw(): the caller must hold mPackages for writing
0 голосов
/ 27 июля 2016

LPr означает доступ на чтение к mPackages
LPw означает доступ на запись к mPackages

http://androidxref.com/4.0.3_r1/xref/frameworks/base/services/java/com/android/server/pm/PackageManagerService.java#293

// Keys are String (package name), values are Package.  This also serves
// as the lock for the global state.  Methods that must be called with
// this lock held have the prefix "LP".
final HashMap<String, PackageParser.Package> mPackages =
        new HashMap<String, PackageParser.Package>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...