по нешто за Android …
In: компјутери
3 окт 2011Значи прво вака – ко ке download-ирам апликација од маркет НЕКАМ да гледам лог на сите страни. И како девелопери мора да внимаваме сите на ова.
Значи кога аппликација оди јавно , продукциска верзија несмеј да има уклучено логирање.
КРАТКО РЕШЕНИЕ :
private boolean isDebugMode() {
return (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
}
ова го чита флагот <application… android:debuggable=”true” … > од AndroidManifest.xml. Овај параметар ке одлучи дали да се логира или не. Значи во иднина се шо треба е во AndroidManifest.xml фајлот да го сеттирате флагот android:debuggable на false.
Во следниот пост ке пишам за Application класа , како ентри-поинт на секоја апликација и шо би требало внатре да се инициализира.
Збогум сега за сега …
In: Некатегоризирано
24 фев 2011In: компјутери
28 сеп 2010После долго време куцање кодови за андроид апликации, бази мази и 300 други чуда , приметив огромно повторување на код – посебно во делот кога се работи со курсори. Во консултација со мојот драг тутор Никола Живков стигнавме до решение кое не е баш нешто ново и невидено во Јава светот – ама во Android код никогаш го немав сретнато.
Се работи за Template method pattern - генерични методи и класи кои го кријат целиот повторувачки код , како и сите проверки и прилагодвања на еден курсор. Кодот е краток и сосем јасен – за тие што не се запознаени детално со Java generics – повелете краток туториал
Source Code – CursorHelper.java
Пример 1 :
CursorHelper cursorHelper = CursorHelper.getInstance(context);
someObject = cursorHelper.processWithCursor(
new CursorQuery<SomeObject>(SOME_CONTENT_URI, null,WHERE_CLAUSE, null, null){
@Override
public SomeObject doWithCursor(Cursor c) {
//some work with c
SomeObject obj = new SomeObject();
return obj;
}
});
овај пример работи со методата processWithCursor која врака резултат/објект
мислам дека кодот е доволно јасен , за подетални прашања пишете коментар
Пример 2 :
cursorHelper.processWithCursorWithoutResult(new CursorQueryWithoutResult(CONTENT_URI, null, null, null, null) {
@Override
public void doWithCursorWithoutResult(Cursor c) {
// some work with c
}
});
во овај пример се користи методата doWithCursorWithoutResult која не врака ништо – можи да се користи и имплементацијата како во првиот пример со промена – методот ке врака null.
Кодот не е перфектен
треба да се досреди за да биди уште поелегантен – ама во главно тоа е функционалноста која сакавме уште од почтокот да ја добиеме.
п.с. blog.mk SUCKS !!!!!!!!!
In: компјутери
23 сеп 2010како шо ветив – време е за некој подобар пример со asynctask
нема многу да ги објаснувам работите – ке видите во кодот шо има.
двата примери се за download на content од нет, поточно слики. Првиот пример лоадира слики во позадина и прикажва диалог. Втората функционалност во истата апликација лоадирање на истите слики но со прогрес диалог
Втората апликација е асинхроно download-ирање на аликите – поточно има листа од слики која ги download-ира ресурсите кога ке бидат потребно. Листата не работи како шо треба – ама главната поента ја има (немма време ич да ја средвам)
Се надевам декак како освновни примери ке ви се најдат во иднина.
Source Code :
AsyncTask with Progress and Loader dialog
p.s. Следниот пост ке биди за CursorHelper – мала магија
In: компјутери
7 сеп 2010Кој шо работел со Android сигурно мн се има замарано со threads/multithreading посбено несто ко ке треба да биди врзано со главниот/UI thread. Епа мило ми е шо во Google мислат на се
. Има апстракна калса AsyncTask која ке ви ја збрка целата работа во посебен thread и то на перфектен и преелегантен начин. Јас веке заборајв на handlers messaging runnable и уште еден тон компликации.
Во позадина работи како нормален thread (нормално во истиот процес како и апликацијата). Посебно добро за пргорес деалози, процес диалози ако и за сите останати захтевни процесиранја/генериранја во позадина.
Има неколку методи кој можите да ги override-увате за ваши потреби
пр :
private class TestTask extends AsyncTask<String, Void, Void> {
protected void onPreExecute() {
doSomeWork ...
}
protected Void doInBackground(String... urls) {
doSomeWork ...
}
protected void onPostExecute(Void unused) {
doSomeWork ...
}
}
методите само си кажват за со се
За да го извршиме таскот треб да се напрај објект ..бла бла .. и да се повица execute(…); во нашиот пример влезен параметар е String – execute(”so sakas”);
Следниот пост ке биди за АsyncTask класа која ке има прогрес/процес диалог
Збогум
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque sed felis. Aliquam sit amet felis. Mauris semper, velit semper laoreet dictum, quam diam dictum urna, nec placerat elit nisl in quam. Etiam augue pede, molestie eget, rhoncus at, convallis ut, eros. Aliquam pharetra.