Logcat:
致命异常:IntentService[BMI]进程:用户。通用域名格式。test2,PID:3377 java。lang.NullPointerException:尝试调用虚拟方法“java”。字符串java。朗,反对。服务上的空对象引用上的toString()。SendBpRecordServer。android上的onHandleIntent(sendbRecordServer.java:66)。应用程序。IntentService$ServiceHandler。android上的handleMessage(IntentService.java:66)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:148)。操作系统。手绢。run(HandlerThread.java:61)
我想做的是:
我使用截取从服务器获取数据,并使用IntentService
在后台执行操作。还可以使用ResultReceiver
将数据从服务获取到活动。
UpdateData。类
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
模板:
@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);
}
这与3IntentService
相同。
错误获取:-
@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);
}
调试:
在第二个意图类中,即sendbimRecordServer。类
我很确定问题只在这门课上。因为当我把日志。i(“获取值”,Constants.getValues)
和初始化
常量。常量中的getValues=0。类
这是我在1点之前得到的结果
试试这个
重写onDestroy方法并执行以下操作
@Override
public void onDestroy() {
super.onDestroy();
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
问题内容: Java noob在这里。当用户按下Windows关闭按钮时,扩展的Swing类不会处理- java.exe保留在内存中。我已经将代码剥离到了这个shell上,但我仍然可以做到这一点。 我看了其他示例,例如Basic Java Swing,如何退出和处置您的应用程序/JFrame。 当我注释掉该示例代码中的两行时,该示例中的类仍然正确处理。我想让我的班级丢掉什么? 问题答案: 您正在创
本文向大家介绍Android AlertDialog实现分享对话框/退出对话框/下载对话框,包括了Android AlertDialog实现分享对话框/退出对话框/下载对话框的使用技巧和注意事项,需要的朋友参考一下 一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直
问题内容: 我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。我尝试过: 但这没用。我也抓不到它的窗口句柄,因为它不是窗口… 是否可以处理这些对象?如何处理? 问题答案: 不幸的是,WebDriver无法处理这些(或任何其他浏览器或OS对话框)。此外,它们在浏览器/系统/语言设置中的外观往往有所不同,因此可能没有明确的答案。您需要检测并处理所有可能的情况,以使其在任何地方都有效。您
问题内容: 我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。我尝试了: 但这没用。我也抓不到它的窗口句柄,因为它不是窗口… 是否可以处理这些对象?如何处理? 问题答案: 不幸的是,WebDriver无法处理这些(或任何其他浏览器或OS对话框)。此外,它们在浏览器/系统/语言设置中的外观往往有所不同,因此可能没有明确的答案。您需要检测并处理所有可能的情况,以使其在任何地方都有效。您
我必须处理打印对话框(与在浏览器中单击ctrl-p时显示的对话框相同)。我试过: 但它不起作用。而且我抓不到它的窗口把手,因为它不是一个窗口。。。 是否有可能处理这些对象,如何处理?
当我按下文件打开对话框上的取消按钮时(代码如下),我收到以下错误: 错误显示为模式弹出窗口: 到目前为止,我只在Mac电脑上测试过。 我的代码如下: 处理创建对话框的主要过程代码如下: 我的调试器语句从未到达。此外,当实际选择了一些文件时,代码工作正常,只有在按下“取消”时才会失败。 触发IPC调用的代码(ES6 JSX)如下所示: 代码通过巴别塔6进行处理。我的如下: 电子版本:. babel依