Yarss – 10

Ще направим един малък проект, в който ще съберем всичко от предишните уроци, с още малко информация.

8 мнения по „Yarss – 10

  1. global vs local variables

    Здрасти,

    не съм сигурен дали не си го споменавал някъде, но ме интересува дали има голяма разлика между глобалните и локалните променливи? Да дефинирам ли всички като глобални или да опитам където е възможно да използвам локални за по-добър performance?

    Поздрави

  2. gatakka Автор

    Ами то в Java няма такова нещо ато глобални променливи, те винаги са в контекста на някой клас или обект. Иначе, аз лично предпочитам подхода с наследяване на базовия Application клас и запазване на данните в него.

  3. global vs local variables

    Sorry, май не се изразих достатъчно добре, явно нямам предвид глобална променлива.
    Ето един прост пример. Интересно ми е дали ще има разлика в performance ако дефинирам addImage не в метода а в клас-а, въпреки че не ми е нужен извън метода. Дали играе голяма роля в случай че използвам много View-та.

    public class SessionDialog extends DialogFragment {

    private View viewer;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

    viewer = inflater.inflate(R.layout.session_view_details, null);
    builder.setView(viewer);

    Button addImage = (Button)viewer.findViewById(R.id.btn_addimage);
    addimage.setText(„add“);

    return builder.create();
    }
    }

  4. gatakka Автор

    Не съм много сигурен, че разбирам въпроса. Ако не е в метод на някой клас къде ще го дефинираш?
    А дали ползваш много views зависи как ги ползваш. Имаш само 1 активно във всеки един момент, идеята е да не се оливаш с вложените 🙂

  5. global vs local variables

    Да точно вложените имах предвид 🙂

    Малко ми липсва терминологията на бългаски. viewer да кажем че е field на класа SessionDialog (аз го нарекох глобална променлива), докато addImage е бутон, локално деклариран в oncreate – естествено мога да го декларирам като field, така че както viewer да е достъпен във всички методи на SessionDialog:

    public class SessionDialog extends DialogFragment {

    private View viewer;
    private Button addImage;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

    viewer = inflater.inflate(R.layout.session_view_details, null);
    builder.setView(viewer);

    addImage = (Button)viewer.findViewById(R.id.btn_addimage);
    addimage.setText(“add”);

    return builder.create();
    }
    }

    В този пример има само един бутон, но ако имам 10xEditText, 10xTextView, няколко Spinner и т.н. Аз лично без да се замислям досега сам декларирал променливи извън методи само ако са ми нужни да живеят в обекта, ти например дефинираш всички Views като fields на класа (lwFeed, edAddress) т.е. извън метода, но не ги използваш само в oncreate(). Дава ли това някакви предимства?

  6. gatakka Автор

    Правилото е просто, декларирай само нещата , които ти трябват.
    Ако ще ползваш един бутон на повече от едно място(метод), задай свойство на класа, присвои го, и го ползвай.
    Ако ще го ползваш само в един метод, го взимай (viewer.findViewById) САМО в метода, в който ще го ползваш.
    Когато почнеш да описваш всичко в onCreate, без да се налага да го ползваш, заемаш излишни ресурси. Може да си ги спестиш, по-точно трябва да си ги спестиш 🙂

  7. Antonov

    Иван Ванков много се радвам че споделяш знанията си с нас аз съм новак фен съм ти ако можеш и имаш време и желание да направиш един урок са криптографията за обмен на специални ключове знам че има и свободни техники за криптиране като Blowfish но за него почти нищо не пише как се използва дали въобще може да се вкара в сайт .Благодаря и ако има как да си запиша някои клипове на хард диска си моля да ми пишеш .Желая ти късмет и здраве .

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *