java - How to queue up data for server dispatch on android -


i working on android app email feature. want users able compose , send emails while in airplane mode. need sort of queue can check if there network , send, etc. image must have been done 100s of times. not sure why searches aren't turning much. know of library or git project can use accomplish this? if not, know how accomplish this?

i believe called queue , send pattern.

update

i starting bounty on question. hope working example not use sms. particular case working on appengine connected android project. client needs send data (string, bitmap, etc under particular pojo dog) server. want able queue these data somehow. can use gson save data file, etc. bottom line need able check network. when there network dequeue queue server. if there no network, keep saving queue.

my queue can queue<dog>, dog class fields such bitmap (or path image), string, long, etc.

i looking working example. can simple, example must work. git zip great. giving close half of points question.

class dog{    string dogname;    string pathtoimage;    int dogage;    //etc. }  //design pattern sending dog server 0) unmarshall queue file using gson 1) add dog queue 2) if there network, loop through queue , send data server 3) if there no network save queue file  //ideally, there network, method should able detect , run send data server 

first need set receiver watch wifi connection see when have data, check normal 3g/4g connections , make broadcast receiver well. todo let use implement broadcast receiver connection status changes. put in manifest in application tag

<receiver android:name=".networkchangereceiver" >        <intent-filter>            <action android:name="android.net.conn.connectivity_change" />        </intent-filter> </receiver> 

now need make receiver defined in manifest

public class networkchangereceiver extends broadcastreceiver {     @override     public void onreceive(context context, intent intent) {         //here, check network connection available. if yes, start email service. if not, stop email service.        connectivitymanager cm = (connectivitymanager) context.getsystemservice(context.connectivity_service);        networkinfo info = cm.getactivenetworkinfo();        if (info != null) {            if (info.isconnected()) {                //start service                intent intent = new intent(this, itemservicemanager.class);                startservice(intent);            }            else {                //stop service                intent intent = new intent(this, itemservicemanager.class);                stopservice(intent);            }        }     } } 

what puts big fat antenna called networkchangereceiver out in android land, fine tuned listen in on when android has change in data connection status.

now need build itemservicemanager.class should read database (it should extend service. should choose oldest item in database, (email it, text it, upload server, whatever), , if connection successful remove item database, , load next oldest one. if there no more close service , broadcast receiver.

if have connection , user needs send more data, add database, , make sure service started. maybe notify it should double check database (after few seconds) before deciding can close because nothing there.

this how might disable broadcast receiver.

packagemanager packagemanager  = context.getpackagemanager(); componentname componentname = new componentname(context, networkchangereceiver.class);         packagemanager.setcomponentenabledsetting(componentname,packagemanager.component_enabled_state_disabled, packagemanager.dont_kill_app); 

when new item uploaded, if there no web connection, email should saved database , broadcast receiver should started know when internet can know when upload. might start this.

packagemanager packagemanager  = context.getpackagemanager(); componentname componentname = new componentname(context, networkchangereceiver.class);         packagemanager.setcomponentenabledsetting(componentname,packagemanager.component_enabled_state_enabled,packagemanager.dont_kill_app); 

the whole point care connection broadcasts when have stored uploaded can not upload because of no data connection. when have nothing upload, don't waste processing , battery keeping receiver/service around. , when have emails waiting, start broadcastreceiver, know when have data connection can start uploading.

i not think going write whole working solution you, more enough on way.

edit:

another thing can do, let server allow acceptance of array of items, way can upload @ once when valid connection. if each item decently small. if uploading pictures or videos or large, best 1 @ time probably.


Comments

Popular posts from this blog

PHPMotion implementation - URL based videos (Hosted on separate location) -

c# - Unity IoC Lifetime per HttpRequest for UserStore -

I am trying to solve the error message 'incompatible ranks 0 and 1 in assignment' in a fortran 95 program. -