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,“别处”代码有两个选项:显示给我们或找到其他可以帮助的人…:-/