Я уверен, что это не остановлено, потому что в моей базе данных я все еще получаю позиции GPS из эмулятора, когда у меня есть кнопка, чтобы остановить службу.
Вы, вероятно, не отменяете регистрацию своего LocationListener
.
Да, вы просто не можете сделать их классами верхнего уровня, они должны быть внутренними классами
public class Outer
{
protected class Foo
{
}
}
Это нормально, это означает, что единственными классами, которым разрешено видеть Foo, являются подклассы внешнего
class X
{
// 'Outer.Foo' is inaccessible due to its protection level
private void Flibble(Outer.Foo foo)
{
}
}
class X : Outer
{
// fine
private void Flibble(Outer.Foo foo)
{
}
}
] Обратите внимание, что вы не можете объявить какой-либо внешний класс как частный, защищенный (или защищенный внутренний) в C #, поскольку модификатор доступа для классов внешнего уровня определяет их видимость по отношению к другим сборкам. В частности, виден только внутри сборки (или для друзей через InternalsVisibleTo) или вне сборки.
Таким образом, хотя здесь для согласованности используются общедоступные / внутренние идентификаторы, на самом деле состояние в IL просто «Public» или «NonPublic» (как показывают флаги Reflection.Emit )
protected
видимость используется для обозначения «видимой для производных классов». Это имеет смысл для вещей внутри класса, но обычно не имеет значения на уровне класса.
Единственным исключением из этого является внутренний класс, где защищенная видимость означает, что производные классы будут иметь доступ к внутреннему классу.
Да, мы просто не можем сделать их классами верхнего уровня, они должны быть внутренними классами