为什么文档不使用 `this` 即 `Service` 作为文档中 `Context` 的参数?
Why does the doc do not use `this` i.e `Service` for the argument for `Context` in the documentation?
如果不使用 Service
从 Context
继承有什么用?
例如来自 android docs for sync adapter
我们看到:
public class SyncService extends Service {
// Storage for an instance of the sync adapter
private static SyncAdapter sSyncAdapter = null;
// etc
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
所以它不会在 SyncAdapter
的构造函数中传递 this
但 getApplicationContext
.
那么为什么 this
在文档中没有作为 Context
传递?那么 Service
从 Context
继承有什么意义呢?
So why is not this passed as Context in the docs?
因为 SyncAdapter
实例保存在 static
字段中:
private static SyncAdapter sSyncAdapter = null;
static
字段是故意的内存泄漏:您在该字段中保存的任何内容都不能被垃圾回收,对于该对象引用的任何内容也是如此。
getApplicationContext()
returns Application
对象。这是一个单例,在您的进程分叉时设置。因此,它是“预泄漏”的——您不能通过对它的 static
引用来进一步泄漏它。
由于 SyncAdapter
实例保存在 static
字段中,因此我们传递给 SyncAdapter
构造函数的任何 Context
都可能被泄露——无论是否会泄露与 SyncAdapter
的实施相关,这可能因 OS 版本或制造商干预而异。因此,为了安全起见,文档对 Context
使用 Application
单例,而不是冒泄漏 SyncService
实例的风险。
So why is not this passed as Context in the docs?
因为这可能会通过 sSyncAdapter
字段泄漏 SyncService
实例。
如果不使用 Service
从 Context
继承有什么用?
例如来自 android docs for sync adapter
我们看到:
public class SyncService extends Service {
// Storage for an instance of the sync adapter
private static SyncAdapter sSyncAdapter = null;
// etc
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
所以它不会在 SyncAdapter
的构造函数中传递 this
但 getApplicationContext
.
那么为什么 this
在文档中没有作为 Context
传递?那么 Service
从 Context
继承有什么意义呢?
So why is not this passed as Context in the docs?
因为 SyncAdapter
实例保存在 static
字段中:
private static SyncAdapter sSyncAdapter = null;
static
字段是故意的内存泄漏:您在该字段中保存的任何内容都不能被垃圾回收,对于该对象引用的任何内容也是如此。
getApplicationContext()
returns Application
对象。这是一个单例,在您的进程分叉时设置。因此,它是“预泄漏”的——您不能通过对它的 static
引用来进一步泄漏它。
由于 SyncAdapter
实例保存在 static
字段中,因此我们传递给 SyncAdapter
构造函数的任何 Context
都可能被泄露——无论是否会泄露与 SyncAdapter
的实施相关,这可能因 OS 版本或制造商干预而异。因此,为了安全起见,文档对 Context
使用 Application
单例,而不是冒泄漏 SyncService
实例的风险。
So why is not this passed as Context in the docs?
因为这可能会通过 sSyncAdapter
字段泄漏 SyncService
实例。