Logcat:
FATAL EXCEPTION: IntentService[BMI] Process: user.com.test2, PID: 3377 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference at services.SendBpRecordServer.onHandleIntent(SendBpRecordServer.java:66) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61)
What I am trying to do:
I am fetching data from server using volley and to do operation in background using IntentService. And also using ResultReceiver to get the data from the service to activity.
UpdateData.class
public class Updatedata extends AppCompatActivity implements MyResultReceiver.Receiver{
DbHelper dbHelper;
public MyResultReceiver resultReceiver, resultReceiverBMI, resultReceiverBP;
ProgressDialog progressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notify);
Log.i("On Creste","Yes");
dbHelper=new DbHelper(this);
//before starting further empty all the tables
dbHelper.emptyTables();
progressDialog=new ProgressDialog(Updatedata.this);
progressDialog.setTitle("Fetching Profile Data");
progressDialog.setMessage("Please Wait...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
resultReceiver=new MyResultReceiver(new Handler());
resultReceiver.setReceiver(this);
System.out.println("Fetch Diabetes Data Service "+ SendDiabetesRecordServer.TAG);
Intent intent=new Intent(this, SendDiabetesRecordServer.class);
intent.putExtra("nameTag","fetch");
intent.putExtra("receiverTag",resultReceiver);
startService(intent);
Log.i("Fetch BMI Data ", SendBmiRecordServer.TAG);
resultReceiverBMI=new MyResultReceiver(new Handler());
resultReceiverBMI.setReceiver(this);
Intent intent1=new Intent(this,SendBmiRecordServer.class);
intent1.putExtra("nameTag","fetch");
intent1.putExtra("receiverTagBMI",resultReceiverBMI);
startService(intent1);
Log.i("Fetch BP Data ", SendBpRecordServer.TAG);
resultReceiverBP=new MyResultReceiver(new Handler());
resultReceiverBP.setReceiver(this);
Intent intent2=new Intent(this,SendBpRecordServer.class);
intent2.putExtra("nameTag","fetch");
intent2.putExtra("receiverTagBP",resultReceiverBP);
startService(intent2);
/*if (progressDialog.isShowing()) {
progressDialog.dismiss();
}*/
}
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
// TODO Auto-generated method stub
Log.d("Diabetes","received result from Service= "+resultData.getString("ServiceTag"));
Log.d("BMI ","received result from Service= "+resultData.getString("ServiceTag"));
/* if (progressDialog.isShowing()) {
progressDialog.dismiss();
}*/
Log.i("Get Values ",Integer.toString(Constants.getValues));
if (resultCode==0 && resultData.getBoolean("Process_Complete"))
Constants.getValues++;
if (resultCode==1 && resultData.getBoolean("Process_Complete_bmi"))
Constants.getValues++;
if (resultCode==2 && resultData.getBoolean("Process_Complete_bp"))
Constants.getValues++;
if (Constants.getValues==3)
{
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
startActivity(new Intent(this,MainActivity.class));
finish();
}
}
}
IntentService Template:
@Override
protected void onHandleIntent(Intent intent) {
String recName=intent.getStringExtra("nameTag");
if (recName.equals("fetch"))
{
fetchDatFromServer();
ResultReceiver resultReceiver=intent.getParcelableExtra("receiverTag");
Log.d("diabetes Reseult ",resultReceiver.toString());
Bundle b= new Bundle();
b.putBoolean("Process_Complete",true);
resultReceiver.send(0, b);
}
This is same for 3 IntentService.
Error Getting At:-
@Override
protected void onHandleIntent(Intent intent) {
String recName=intent.getStringExtra("nameTag");
if (recName.equals("fetch"))
{
Log.i("Send Data","Yes");
fetchDatFromServer();
ResultReceiver resultReceiver=intent.getParcelableExtra("receiverTag");
**Log.d("BP Reseult ",resultReceiver.toString());** //Getting Error at this line
Bundle bun= new Bundle();
bun.putBoolean("Process_Complete_bp",true);
resultReceiver.send(2, bun);
}
Debugging:
In the second intent class i.e SendBmiRecordServer.class
I am very sure the problem is in this class only.
because when I put the Log.i("Get Values", Constants.getValues);
and I have initialize Constants.getValues=0 in Constants.class
This I am getting the result till 1