Java android开发中出现奇怪的异常,可能是由处理程序引起的
以下是异常内容:Java android开发中出现奇怪的异常,可能是由处理程序引起的,java,android,Java,Android,以下是异常内容: 12-03 17:05:21.578 7214-7424/com.android.servermonitor.app E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-12599 Process: com.android.servermonitor.app, PID: 7214 java.lang.NullPointerException at com.android.servermonitor.app.GetPushSe
12-03 17:05:21.578 7214-7424/com.android.servermonitor.app E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-12599
Process: com.android.servermonitor.app, PID: 7214
java.lang.NullPointerException
at com.android.servermonitor.app.GetPushService$3.run(GetPushService.java:85)
at java.lang.Thread.run(Thread.java:841)
现在我把所有代码放在这里:
public class GetPushService extends Service {
private XMPPConnection connection;
private SmackAndroid smackAndroid;
private String[] user_info;
private Handler login_handler,msg_handler;
private ChatManager chatManager;
private NotificationManager notificationManager;
@Override
public int onStartCommand(Intent intent,int args0,int args1){
this.user_info = intent.getStringArrayExtra("USERINFO");
return START_REDELIVER_INTENT;
}
@Override
public void onCreate(){
super.onCreate();
login_handler = new Handler(){
@Override
public void handleMessage(Message msg){
if (msg.what == -1){
Intent intent = new Intent();
intent.putExtra("Login Complete",1);
intent.setAction("com.android.servermonitor.app.LOGIN_COMPLETE");
sendBroadcast(intent);
getPush();
}
}
};
msg_handler = new Handler(){
@Override
public void handleMessage(Message msg){
if (msg.what == 1){
String title = "Notification";
String content = (String)msg.obj;
Intent intent = new Intent(GetPushService.this,LoginActivity.class);
PendingIntent launch = PendingIntent.getActivity(GetPushService.this,0,intent,0);
notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(GetPushService.this)
.setContentTitle(title)
.setContentText(content)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(launch)
.setDefaults(Notification.DEFAULT_VIBRATE);
notificationManager.notify(1,builder.build());
}
}
};
smackAndroid = SmackAndroid.init(this);
new Thread(new Runnable() {
@Override
public void run() {
connection = ConnectManager.connect(user_info[2], Contract.SERVER_PORT);
ConnectManager.login(connection,user_info[0],user_info[1]);
login_handler.sendEmptyMessage(-1);
}
}).start();
}
@Override
public void onDestroy(){
new Thread(new Runnable() {
@Override
public void run() {
connection.disconnect();
smackAndroid.onDestroy();
}
}).start();
super.onDestroy();
}
}
例外情况发生在:
connection=ConnectManager.connect(用户信息[2],合同服务器端口)
这种异常不会每次都发生,它通常会出现在
this.user_info = intent.getStringArrayExtra("USERINFO");
不返回null。这是您活动的外部接口,应检查输入是否有效,或者您必须检查意向的所有填写是否在意向中设置了此额外内容。用户信息在哪里声明?NPE是最容易解决的问题之一!它给出了somethis为NULL的确切行。如果它是您的变量,则不设置它。如果是API调用的结果,请阅读手册以查看可能的结果并添加检查条件。这不是奇怪的异常,而是NullpointerException。这可能是由于初始化造成的,您没有在别处声明。Well,“别处”代码有两个选项:显示给我们或找到其他可以帮助的人…:-/