java - networkOnMainThreadException error even with Async -


i'm running following code on android studio , trying make api call semantics interface. async code:

public class downloadtest extends asynctask<void, void, void> {  public string results = "hello"; public products products = new products("key",         "password");  @override protected void doinbackground(void... params) {     // todo auto-generated method stub     // call web service here     scan me = new scan();          /* build request */     products.productsfield("upc", "883974958450").productsfield("fields", "name", "gtins");          /* make request */     try {         results = products.getproducts().tostring();         log.i("try", results);         me.set_vars(results); //set_vars method mainactivity.java     } catch (exception e) {         log.i("mytag0", e.tostring());     }     return null; }  } 

i didn't include code onpreexecute() or onpostexecute() because don't have in code methods right now.

in logcat mytag0 see networkonmainthreadexception , i've looked @ other threads , have still unable figure out why i'm getting error. i've included correct internet permissions in androidmanifest

<uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.write_external_storage"/> 

in mainactivity.java, make call method doinbackground() following way:

downloadtest work = new downloadtest();     work.doinbackground();     log.i("mytag", my_result); 

thanks!

edit: error message/trace when app crashes if change statement above work.execute()

07-13 13:25:17.824    2718-2733/com.example.jesarshah.snapcart e/androidruntime﹕ fatal exception: asynctask #1 process: com.example.jesarshah.snapcart, pid: 2718 java.lang.runtimeexception: error occured while executing doinbackground()         @ android.os.asynctask$3.done(asynctask.java:304)         @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:355)         @ java.util.concurrent.futuretask.setexception(futuretask.java:222)         @ java.util.concurrent.futuretask.run(futuretask.java:242)         @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231)         @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112)         @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587)         @ java.lang.thread.run(thread.java:818)  caused by: java.lang.runtimeexception: can't create handler inside thread has not called looper.prepare()         @ android.os.handler.<init>(handler.java:200)         @ android.os.handler.<init>(handler.java:114)         @ android.app.activity.<init>(activity.java:794)         @ android.support.v4.app.fragmentactivity.<init>(fragmentactivity.java:76)         @ android.support.v7.app.appcompatactivity.<init>(appcompatactivity.java:50)         @ android.support.v7.app.actionbaractivity.<init>(actionbaractivity.java:23)         @ com.example.jesarshah.snapcart.scan.<init>(scan.java:32)         @ com.example.jesarshah.snapcart.downloadtest.doinbackground(downloadtest.java:26)         @ com.example.jesarshah.snapcart.downloadtest.doinbackground(downloadtest.java:11)         @ android.os.asynctask$2.call(asynctask.java:292)         @ java.util.concurrent.futuretask.run(futuretask.java:237) 

         @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231)             at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112)             at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587)             at java.lang.thread.run(thread.java:818)

do not call doinbackground(). call execute() or executeonexecutor() main application thread.

since, in case, not have onpostexecute() or of other typical asynctask methods, , since on background thread when want work done, either:

  • just work on background thread on, , rid of asynctask entirely, or

  • switch plain thread

also note scan object appears either subclass of actionbaractivity or creating instance of actionbaractivity. neither of these possible. never create own instances of activities.


Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -