5

我注意到在查看 Android 框架代码时,有很多名为 '*Locked()' 的方法的使用。我想知道“锁定”是什么意思以及这些方法反映了哪些特征。

例如,在 Activity 相关的类中有许多以这种方式命名的方法。

android/frameworks/base/services/java/com/android/server/am/ActivityStack.java

  • 开始活动锁定()
  • 确保ActivityVisibleLocked()
  • resumeTopActivityLocked()

提前谢谢你的帮助!:)

4

3 回答 3

2

这意味着该方法是多线程安全的。

于 2014-04-16T15:21:34.727 回答
2

您可以从 ActivityManagerService.class 中找到代码,如下所示:

synchronized (this) {
    dumpActivitiesLocked(fd, pw, args, opti, true, dumpClient, null);
}

或类似的代码:

synchronized (this) {
    methodA();
}
methodA() {
    dumpActivitiesLocked(fd, pw, args, opti, true, dumpClient, null);
}

所以名为 *Locked 的方法表示该方法不是多线程安全的,在 ActivityManagerService.class 中,你应该使用 synchronized(this) 确保多线程安全。

于 2017-05-11T13:58:26.540 回答
0

在我看来,这意味着它需要被锁定以确保 MT 安全,

以下是 Java/C++ 代码的一些示例,

http://androidxref.com/5.0.0_r2/xref/frameworks/base/core/java/android/app/ContextImpl.java#1007

http://androidxref.com/5.0.0_r2/xref/frameworks/minikin/libs/minikin/MinikinRefCounted.cpp#25

于 2014-12-26T09:21:22.737 回答