Android 执行Asynctask时发生java.lang.NullPointerException
我想将用户注册到gcm服务器,因此我使用此功能:Android 执行Asynctask时发生java.lang.NullPointerException,android,android-asynctask,google-cloud-messaging,Android,Android Asynctask,Google Cloud Messaging,我想将用户注册到gcm服务器,因此我使用此功能: private void registerInBackground() { new AsyncTask<Void,Void,String>() { @Override protected String doInBackground(Void... params) { String msg = "";
private void registerInBackground() {
new AsyncTask<Void,Void,String>() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regid;
// You should send the registration ID to your server over HTTP,
// so it can use GCM/HTTP or CCS to send messages to your app.
// The request to your server should be authenticated if your app
// is using accounts.
sendRegistrationIdToBackend();
// For this demo: we don't need to send it because the device
// will send upstream messages to a server that echo back the
// message using the 'from' address in the message.
// Persist the regID - no need to register again.
// storeRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
// If there is an error, don't just keep trying to register.
// Require the user to click a button again, or perform
// exponential back-off.
}
return msg;
}
@Override
protected void onPostExecute(String msg) {
mDisplay.append(msg + "\n");
}
}.execute(null, null, null);
}
private void registerInBackground(){
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
字符串msg=“”;
试一试{
如果(gcm==null){
gcm=GoogleCloudMessaging.getInstance(上下文);
}
regid=gcm.寄存器(发送方ID);
msg=“设备已注册,注册ID=“+regid;
//您应该通过HTTP将注册ID发送到服务器,
//因此,它可以使用GCM/HTTP或CCS向您的应用程序发送消息。
//如果您的应用程序
//正在使用帐户。
sendRegistrationIdToBackend();
//对于这个演示:我们不需要发送它,因为设备
//将向服务器发送上游消息,以回送
//使用消息中的“发件人”地址发送消息。
//坚持注册-无需再次注册。
//storeRegistrationId(上下文,regid);
}捕获(IOEX异常){
msg=“错误:”+ex.getMessage();
//如果出现错误,不要一直尝试注册。
//要求用户再次单击按钮,或执行以下操作
//退后。
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){
mDisplay.append(msg+“\n”);
}
}.执行(空,空,空);
}
它与前面描述的函数相同,所以我很惊讶得到一个NullPOinterEXCEPTION错误,我认为这是因为这行代码:execute(null,null,null,null),但这是google给我的!我该怎么办?mDisplay初始化了吗?你真聪明!非常感谢:)