android - Don't know if it is safe to implement Asynctask like that -
i made code on android , receive opinions stackoverflow people. code used asynctask class... don't know if coded or not ...
here code:
package com.example.basicmaponline; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import java.util.hashmap; import java.util.concurrent.executionexception; import android.app.activity; import android.content.intent; import android.os.asynctask; import android.os.bundle; import android.os.handler; import android.os.message; import android.util.log; import com.mlab.android.basicoverlays.postgresql; import com.mlab.android.basicoverlays.sqlloja; public class intro extends activity{ //sqllistloja listaloja; hashmap<string, sqlloja> listaloja; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.intro); //intent openmainactivity = new intent("com.example.basicmaponline.mainactivity"); //isto vem ficheiro androidmanifest.xml o "com.example....." //startactivity(openmainactivity); try { listaloja = new loaddatabase().execute().get(); } catch (interruptedexception e1) { // todo auto-generated catch block e1.printstacktrace(); } catch (executionexception e) { // todo auto-generated catch block e.printstacktrace(); } if(listaloja !=null){ for(sqlloja loja : listaloja.values()){ log.d("async25", loja.getnome() ); } } else{ log.d("async25", "nao guardou!" ); } thread timer = new thread(){ public void run(){ try{ sleep(3000); }catch (interruptedexception e) { // todo: handle exception e.printstacktrace(); }finally{ intent openmenu = new intent("com.example.basicmaponline.menu"); //isto vem ficheiro androidmanifest.xml o "com.example....." openmenu.putextra("listaloja",listaloja); startactivity(openmenu); } } }; timer.start(); } @override protected void onpause() { // todo auto-generated method stub super.onpause(); //oursong.release(); //release music , done finish(); } //@suppresswarnings("rawtypes") public class loaddatabase extends asynctask<void, void, hashmap<string,sqlloja>>{ @override protected hashmap<string,sqlloja> doinbackground(void... params) { // todo auto-generated method stub hashmap<string,sqlloja>listalojas = new hashmap<string, sqlloja>(); try{ postgresql psql = new postgresql(host,db, username, password); string sql = psql.getlojascidadao(); statement st = psql.getconnection().createstatement(); resultset rs = st.executequery(sql); log.d("async2","entrei na thread asynctask"); while(rs.next()){ int lcid = integer.parseint(rs.getstring(1)); string lcnome=rs.getstring(2); string lccp = rs.getstring(3); int lcdistrito = integer.parseint(rs.getstring(4)); int lcconselho = integer.parseint(rs.getstring(5)); double lcaltitude = double.parsedouble(rs.getstring(6)); double lclongitude = double.parsedouble(rs.getstring(7)); string lctelefone = rs.getstring(8); boolean lcestado = boolean.parseboolean(rs.getstring(9)); string lcrua = rs.getstring(10); sqlloja loja = new sqlloja(lcid,lcnome,lccp,lcdistrito,lcconselho,lcaltitude,lclongitude,lctelefone,lcestado,lcrua); listalojas.put(loja.getnome(),loja.clone()); string informacoesloja = "rua : "+lcrua+"\nc.p. : "+lccp+"\ntel. : "+lctelefone; log.d("async",lcnome+" altitude = "+lcaltitude+" longitude = "+lclongitude+" rua = "+lcrua); } //listaloja = new sqllistloja(listalojas); rs.close(); st.close(); } catch (sqlexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (classnotfoundexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (exception e) { e.printstacktrace(); } if(listalojas!=null){ log.d("async","entrei no if da listalojas"); for(sqlloja loja : listalojas.values()){ log.d("async", loja.getnome() ); } } else log.d("async","listaloja nula ! pqp !"); return listalojas; } @override protected void onpostexecute(hashmap<string,sqlloja> listalojas){ listaloja = listalojas; for(sqlloja loja : listaloja.values()){ log.d("async24", loja.getnome() ); } } } } i'm not sure but, think return value asynctask isn't made right way although working on android application. opinions welcomed. thank ! :)
when use asynctask create class instance implement methods, , when want use, create variable asynctask method .start(); if i'm no mistaken. , create progressdialog.
Comments
Post a Comment