Using Parse.com in Android Intent Service -
i want upload data database on parse.com background service on android. have used parse in activities before , used write following lines in oncreate() method:
parse.enablelocaldatastore(this); parse.initialize(this, "kw0fn094jfetdcmryxngsyo3wqkhxaem2rbcldeq", "aklrbwft0zhwqw1huwa0avuk9iqb7z1qkvhxsslj"); when try add same service , call service android app, logcat shows error:
07-07 19:43:27.393 1053-1578/com.example.shikhar.trackmydevice e/androidruntime﹕ fatal exception: intentservice[uploadservice] process: com.example.shikhar.trackmydevice, pid: 1053 java.lang.illegalstateexception: `parse#enablelocaldatastore(context)` must invoked before `parse#initialize(context)` @ com.parse.parse.enablelocaldatastore(parse.java:65) @ com.example.shikhar.trackmydevice.uploadservice.onhandleintent(uploadservice.java:81) @ android.app.intentservice$servicehandler.handlemessage(intentservice.java:65) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:135) @ android.os.handlerthread.run(handlerthread.java:61) i have declared service in androidmanifest.xml here's snippet:
<service android:enabled="true" android:name="com.example.shikhar.appname.uploadservice"/> </application> this code of upload service:
package com.example.shikhar.appname; import android.app.intentservice; import android.content.intent; import android.util.log; import com.parse.findcallback; import com.parse.getcallback; import com.parse.parse; import com.parse.parseobject; import com.parse.parsequery; public class uploadservice extends intentservice { protected static final string tag = "uploadservice: "; public uploadservice() { super("uploadservice"); } /** * intentservice calls method default worker thread * intent started service. when method returns, intentservice * stops service, appropriate. */ @override protected void onhandleintent(intent intent) { parse.enablelocaldatastore(this); parse.initialize(this, "kw0fn094jfetdcmryxngsyo3wqkhxaem2rbcldeq", "aklrbwft0zhwqw1huwa0avuk9iqb7z1qkvhxsslj"); } @override public void ondestroy() { } } i'm starting , stopping service single imagebutton in main activity. code in oncreate() of activity:
btnservice.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { intent intent = new intent(thisactivity, uploadservice.class); if(serviceisrunning(uploadservice.class)) { stopservice(intent); } else { startservice(intent); } if(serviceisrunning(uploadservice.class)) { btnservice.setimageresource(r.mipmap.ic_service_stop); } else { btnservice.setimageresource(r.mipmap.ic_service_start); } } }); the above code uses following method defined outside oncreate inside class of myactivity:
protected boolean serviceisrunning(class<?> serviceclass) { activitymanager manager = (activitymanager) getsystemservice(context.activity_service); (activitymanager.runningserviceinfo service : manager.getrunningservices(integer.max_value)) { if (serviceclass.getname().equals(service.service.getclassname())) { return true; } } return false; } please suggest me. should do?
you can try initialazing parse in custom application, don't have initialize in every activity or service:
public class myaplication extends application { @override public void oncreate() { super.oncreate(); parse.enablelocaldatastore(this); parse.initialize(this, "xxxx", "xxxx"); } } then in androidmanifest.xml add name:
<application android:name=".myaplication" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" >
Comments
Post a Comment