2012-06-01 3 views
0

Я просто хочу посмотреть, что вы, ребята, можете подумать о различии (с точки зрения использования, эффективности или даже хорошей практики) в отношении разработки Android.Статические переменные Vs переменные приложения

Если я использую статическую переменную в одном из моих базовых действий (так что его единственный экземпляр и доступ повсюду), в отличие от использования нестатической переменной в моем подклассе приложения (который является одним классом приложения для всех видов деятельности).

Оба будут добиваться одинаковых конечных результатов, если вы попытаетесь использовать глобальную переменную.

Я использовал статический, тогда я перешел на использование подкласса приложения (в случае, если вы, ребята, задаетесь вопросом «что я использую для», я хотел играть в фоновую музыку и контролировать ее со всех сторон, и я не желают воспользоваться услугой по определенным причинам).

Любая помощь, разъясняющая лучший способ?

+0

Я думаю, вы можете прочитать http://stackoverflow.com/questions/2475978/using-static-variables-in-android - он отвечает на ваш вопрос, на мой взгляд.Если вы используете только одну статическую переменную, это, вероятно, меньше накладных расходов, чем одноэлементный класс, но на самом деле, в большей части вещей, это не делает реальной разницы, а статические переменные существуют по какой-то причине - это не плохая практика, если использовать экономно. – Ewald

+0

Спасибо, но это отвечает, следует ли использовать статику или нет. Мой вопрос заключается в том, следует ли использовать статический или прикладной подкласс и какова будет разница, поскольку оба сохраняются в памяти. – Snake

ответ

3

Это зависит от использования также предположим, что если вы используете

android:process 

по какой-то причине в вашей Activity или что-нибудь еще в вашем файле манифеста ваше статическое значение будет сброшено, и вы получите начальное значение, присвоенное статическая переменная. В этом случае вы можете использовать класс SharedPreference или Application.

Потому что, если вы используете android:process для любой конкретной деятельности, то эта деятельность будет работать в другом процессе, и, как мы знаем, в Android каждое приложение работает в своем собственном процессе.

Кроме этого, я не вижу, что существует много проблем с использованием статического электричества. Но лично я предпочел бы класс Application, поскольку Android имеет его для глобальных переменных.

+0

[жизненный цикл] (http://www.javaying.com/2007/01/whats-lifetime-of- variables.html) статической переменной через жизненный цикл программы, поэтому статическое значение никогда не будет сброшено. – Lucifer

+1

@ Lucifer Android создает отдельный процесс, когда мы используем 'android: process', поэтому он отдельно перезагружает его значение. –

+0

Согласитесь, что Dlavik Virtual Machine создает отдельный процесс для каждого приложения. но я не думаю, что статические изменения его поведения на любом языке программирования, как это имя статистика. у вас есть какая-либо ссылка на документ, связанная с этим? – Lucifer

1

Во время выполнения программы каждая переменная имеет свое время, в течение которого к ней можно получить доступ. Это называется временем жизни переменной.

  • Переменные: Переменные являются членами класса. Каждый раз, когда вы создаете объект из класса, для этого объекта создается новая копия этих переменных экземпляра. Собственно, создание объекта из класса означает, частично, создание экземпляров переменных экземпляра для этого объекта. Таким образом, каждый объект имеет свою собственную копию переменных экземпляра, которые существуют до тех пор, пока объект, к которому они принадлежат, существует. Значения этих переменных составляют то, что мы называем: состояние объекта.

  • Статические переменные: Статические переменные также являются членами класса, но не может принадлежать к какой-либо объект, созданный из этого класса. Таким образом, созданные объекты из класса не получают собственных копий статических переменных. Поэтому статические переменные создаются только тогда, когда класс загружается во время выполнения. Существование статических переменных зависит только от самого класса. В результате статическая переменная существует до тех пор, пока ее класс существует.

Одним из основной разницы между этими двумя переменными является то, что, когда вы звоните System.gc(); переменная экземпляру устанавливается в нуль, а static variable will never set to null by calling gc.

+0

Ваша информация более полезная дорогая Люцифер. Могу ли я узнать подробности в вашем чате, если вы дадите разрешение на вход в чат? –

Смежные вопросы