[英]unable to start Activity ComponentInfo on resume
My app works fine but when the app goes to the background it crashes when it should resume. 我的应用程序运行良好,但是当应用程序进入后台运行时,它崩溃了,应该恢复运行。 As you can see in the source code I log the onStart, onStop etcetera events. 如您在源代码中看到的,我记录了onStart,onStop等事件。
In my log I can see onStart, onResume when I start the app. 在我的日志中,启动应用程序时可以看到onStart,onResume。 When I press the back-key I see: onStop, STOP, onPause and onDestroy. 当我按返回键时,我看到:onStop,STOP,onPause和onDestroy。
When I try to restart the app it crashes immediately, no further messages are in the log except 'unable to start Activity ComponentInfo java lang.NullPointerException. 当我尝试重新启动应用程序时,该应用程序立即崩溃,除了“无法启动Activity ComponentInfo java lang.NullPointerException”外,日志中没有其他消息。
How can I prevent this? 我该如何预防?
public class Start extends Activity {
private Handler handler = new Handler();
private ArrayList<String> discussionThread;
private EditText textMessage;
private ListView listview;
private ConnectionConfiguration config;
private Presence presence;
private MultiUserChat muc;
private DiscussionHistory history;
private PacketFilter filter;
private MyCustomAdapter discussionThreadAdapter;
private XMPPConnection connection;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
initConnection();
} catch (XMPPException e) {
e.printStackTrace();
}
final EditText textMessage = (EditText) this.findViewById(R.id.message);
listview = (ListView) this.findViewById(R.id.list);
discussionThread = new ArrayList<String>();
discussionThreadAdapter = new MyCustomAdapter();
listview.setAdapter(discussionThreadAdapter);
Button send = (Button) this.findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String text = textMessage.getText().toString();
Message msg = new Message(ROOM, Message.Type.groupchat);
msg.setBody(text);
connection.sendPacket(msg);
discussionThreadAdapter.notifyDataSetChanged();
textMessage.setText("");
}
});
textMessage.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
SendText();
return true;
default:
break;
}
}
return false;
}
});
}
private void initConnection() throws XMPPException {
config = new ConnectionConfiguration(SERVER_HOST, SERVER_PORT, SERVICE_NAME);
connection = new XMPPConnection(config);
connection.connect();
connection.login(LOGIN, PASSWORD);
presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
muc = new MultiUserChat(connection, ROOM);
history = new DiscussionHistory();
history.setMaxStanzas(25);
muc.join(LOGIN, PASSWORD, history, SmackConfiguration.getPacketReplyTimeout());
filter = new MessageTypeFilter(Message.Type.groupchat);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String fromName = message.getFrom().substring(48);
String nieuweRegel = fromName + ": " + message.getBody();
fromName = fromName.toUpperCase();
if (fromName.equals(LOGIN.toUpperCase())) {
discussionThreadAdapter.addVanMijItem(nieuweRegel);
} else {
discussionThreadAdapter.addVanAnderItem(nieuweRegel);
}
}
}
}, filter);
}
private void Notify() {
discussionThreadAdapter.notifyDataSetChanged();
listview.setSelection(discussionThreadAdapter.getCount());
}
private class MyCustomAdapter extends BaseAdapter {
private static final int BERICHT_VAN_ANDER = 0;
private static final int BERICHT_VAN_MIJ = 1;
private static final int TYPE_MAX_COUNT = BERICHT_VAN_MIJ + 1;
private LayoutInflater mInflater;
private TreeSet<Integer> mySet = new TreeSet<Integer>();
public MyCustomAdapter() {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void addVanAnderItem(final String item) {
discussionThread.add(item);
handler.post(new Runnable() {
public void run() {
Notify();
}
});
}
public void addVanMijItem(final String item) {
discussionThread.add(item);
mySet.add(discussionThread.size() - 1);
handler.post(new Runnable() {
public void run() {
Notify();
}
});
}
@Override
public int getItemViewType(int position) {
return mySet.contains(position) ? BERICHT_VAN_MIJ : BERICHT_VAN_ANDER;
}
@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}
@Override
public int getCount() {
return discussionThread.size();
}
@Override
public String getItem(int position) {
return discussionThread.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case BERICHT_VAN_ANDER:
convertView = mInflater.inflate(R.layout.bericht_van_ander_item, null);
holder.textView = (TextView)convertView.findViewById(R.id.textline);
break;
case BERICHT_VAN_MIJ:
convertView = mInflater.inflate(R.layout.bericht_van_mij_item, null);
holder.textView = (TextView)convertView.findViewById(R.id.textline);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(discussionThread.get(position));
return convertView;
}
}
public static class ViewHolder {
public TextView textView;
}
private void SendText() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textMessage.getWindowToken(), 0);
String text = textMessage.getText().toString();
Message msg = new Message(ROOM, Message.Type.groupchat);
msg.setBody(text);
connection.sendPacket(msg);
textMessage.setText("");
}
public void onStart() {
super.onStart();
Log.i("CONN", "onStart");
startConnection();
}
public void onRestart() {
super.onRestart();
Log.i("CONN", "onReStart");
startConnection();
}
public void onResume() {
super.onResume();
Log.i("CONN", "onResume");
startConnection();
}
public void onPause() {
super.onPause();
Log.i("CONN", "onPause");
stopConnection();
}
public void onStop() {
super.onStop();
Log.i("CONN", "onStop");
stopConnection();
}
public void onDestroy() {
super.onDestroy();
Log.i("CONN", "onDestroy");
stopConnection();
}
private void stopConnection() {
if (connection != null) {
Log.i("CONN", "STOP");
connection.disconnect(presence);
connection = null;
filter = null;
history = null;
muc = null;
presence = null;
config = null;
discussionThreadAdapter = null;
}
}
private void startConnection() {
if (connection.isConnected() ) {
} else {
Log.i("CONN", "START");
try {
initConnection();
} catch (XMPPException e) {
e.printStackTrace();
}
}
}
} }
OK I changed the following: 好的,我更改了以下内容:
private void startConnection() {
if (connection != null ) {
Log.i("CONN", "RUNNING");
} else {
Log.i("CONN", "START");
try {
initConnection();
} catch (XMPPException e) {
e.printStackTrace();
}
}
}
I start the app, everything works fine. 我启动应用程序,一切正常。 Log: 日志:
05-12 08:40:21.743: D/AndroidRuntime(491): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 05-12 08:40:21.743: D/AndroidRuntime(491): CheckJNI is ON 05-12 08:40:21.743:D / AndroidRuntime(491):>>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 05-12 08 :40:21.743:D / AndroidRuntime(491):CheckJNI已打开
05-12 08:40:22.065: D/AndroidRuntime(491): --- registering native functions --- 05-12 08:40:22.065:D / AndroidRuntime(491):-注册本机函数-
05-12 08:40:23.353: D/AndroidRuntime(491): Shutting down VM 05-12 08:40:23.353:D / AndroidRuntime(491):关闭VM
05-12 08:40:23.363: D/dalvikvm(491): Debugger has detached; 05-12 08:40:23.363:D / dalvikvm(491):调试器已分离; object registry had 1 entries 对象注册表有1个条目
05-12 08:40:23.393: I/AndroidRuntime(491): NOTE: attach of thread 'Binder Thread #3' failed 05-12 08:40:23.393:I / AndroidRuntime(491):注意:线程'Binder线程#3'的附加失败
05-12 08:40:24.184: D/AndroidRuntime(499): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 05-12 08:40:24.184:D / AndroidRuntime(499):>>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<<
05-12 08:40:24.184: D/AndroidRuntime(499): CheckJNI is ON 05-12 08:40:24.184:D / AndroidRuntime(499):CheckJNI已开启
05-12 08:40:24.523: D/AndroidRuntime(499): --- registering native functions --- 05-12 08:40:24.523:D / AndroidRuntime(499):-注册本机函数-
05-12 08:40:25.873: I/ActivityManager(70): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=nl.yeswecanclinics.chat/.Start } 05-12 08:40:25.873:I / ActivityManager(70):开始活动:意图{act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 cmp = nl.yeswecanclinics。聊天/。开始}
05-12 08:40:25.965: D/AndroidRuntime(499): Shutting down VM 05-12 08:40:25.965:D / AndroidRuntime(499):关闭VM
05-12 08:40:25.973: D/dalvikvm(499): Debugger has detached; 05-12 08:40:25.973:D / dalvikvm(499):调试器已分离; object registry had 1 entries 对象注册表有1个条目
05-12 08:40:26.034: I/AndroidRuntime(499): NOTE: attach of thread 'Binder Thread #3' failed 05-12 08:40:26.034:I / AndroidRuntime(499):注意:线程'Binder线程#3'的附加失败
05-12 08:40:26.105: I/ActivityManager(70): Start proc nl.yeswecanclinics.chat for activity nl.yeswecanclinics.chat/.Start: pid=506 uid=10032 gids={3003, 1015} 05-12 08:40:26.105:I / ActivityManager(70):启动proc nl.yeswecanclinics.chat进行活动nl.yeswecanclinics.chat/。开始:pid = 506 uid = 10032 gids = {3003,1015}
05-12 08:40:27.843: I/global(506): Default buffer size used in BufferedReader constructor. 05-12 08:40:27.843:I / global(506):BufferedReader构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:40:27.843: I/global(506): Default buffer size used in BufferedWriter constructor. 05-12 08:40:27.843:I / global(506):BufferedWriter构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:40:28.294: W/System.err(506): java.security.KeyStoreException: KeyStore jks implementation not found 05-12 08:40:28.294:W / System.err(506):java.security.KeyStoreException:找不到KeyStore jks实现
05-12 08:40:28.294: W/System.err(506): at java.security.KeyStore.getInstance(KeyStore.java:134) 05-12 08:40:28.294:W / System.err(506):at java.security.KeyStore.getInstance(KeyStore.java:134)
05-12 08:40:28.294: W/System.err(506): at org.jivesoftware.smack.ServerTrustManager.(ServerTrustManager.java:61) 05-12 08:40:28.294:W / System.err(506):位于org.jivesoftware.smack.ServerTrustManager。(ServerTrustManager.java:61)
05-12 08:40:28.294: W/System.err(506): at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:832) 05-12 08:40:28.294:W / System.err(506):在org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:832)
05-12 08:40:28.304: W/System.err(506): at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:268) 05-12 08:40:28.304:W / System.err(506):位于org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:268)
05-12 08:40:28.304: W/System.err(506): at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44) 05-12 08:40:28.304:W / System.err(506):在org.jivesoftware.smack.PacketReader.access $ 000(PacketReader.java:44)
05-12 08:40:28.313: W/System.err(506): at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:71) 05-12 08:40:28.313:W / System.err(506):在org.jivesoftware.smack.PacketReader $ 1.run(PacketReader.java:71)
05-12 08:40:29.004: I/global(506): Default buffer size used in BufferedReader constructor. 05-12 08:40:29.004:I / global(506):BufferedReader构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:40:29.014: I/global(506): Default buffer size used in BufferedWriter constructor. 05-12 08:40:29.014:I / global(506):BufferedWriter构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:40:29.483: D/dalvikvm(506): GC_FOR_MALLOC freed 3668 objects / 280752 bytes in 153ms 05-12 08:40:29.483:D / dalvikvm(506):GC_FOR_MALLOC在153毫秒内释放了3668个对象/ 280752字节
05-12 08:40:29.663: I/CONN(506): onStart 05-12 08:40:29.663:I / CONN(506):onStart
05-12 08:40:29.685: I/CONN(506): RUNNING 05-12 08:40:29.685:I / CONN(506):正在运行
05-12 08:40:29.685: I/CONN(506): onResume 05-12 08:40:29.685:I / CONN(506):onResume
05-12 08:40:29.693: I/CONN(506): RUNNING 05-12 08:40:29.693:I / CONN(506):正在运行
05-12 08:40:30.633: I/ActivityManager(70): Displayed activity nl.yeswecanclinics.chat/.Start: 4712 ms (total 384269 ms) 05-12 08:40:30.633:I / ActivityManager(70):显示的活动nl.yeswecanclinics.chat/。开始:4712 ms(总计384269 ms)
05-12 08:40:37.114: D/dalvikvm(175): GC_EXPLICIT freed 444 objects / 22064 bytes in 122ms 05-12 08:40:37.114:D / dalvikvm(175):GC_EXPLICIT在122ms内释放了444个对象/ 22064个字节
I PRESS THE BACK BUTTON 我按下后背按钮
05-12 08:41:07.253: W/KeyCharacterMap(506): No keyboard for id 0 05-12 08:41:07.253:W / KeyCharacterMap(506):ID为0的无键盘
05-12 08:41:07.253: W/KeyCharacterMap(506): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 05-12 08:41:07.253:W / KeyCharacterMap(506):使用默认键盘映射:/system/usr/keychars/qwerty.kcm.bin
05-12 08:41:07.403: I/CONN(506): onPause 05-12 08:41:07.403:I / CONN(506):暂停
05-12 08:41:07.403: I/CONN(506): STOP 05-12 08:41:07.403:I / CONN(506):停止
05-12 08:41:07.784: W/InputManagerService(70): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@45066cf8 (uid=10032 pid=506) 05-12 08:41:07.784:W / InputManagerService(70):在非重点客户端com.android.internal.view.IInputMethodClient$Stub$Proxy@45066cf8(uid = 10032 pid = 506)上开始输入
05-12 08:41:07.804: W/IInputConnectionWrapper(506): showStatusIcon on inactive InputConnection 05-12 08:41:07.804:W / IInputConnectionWrapper(506):无效InputConnection上的showStatusIcon
05-12 08:41:08.173: I/CONN(506): onStop 05-12 08:41:08.173:I / CONN(506):onStop
05-12 08:41:08.173: I/CONN(506): onDestroy 05-12 08:41:08.173:I / CONN(506):onDestroy
I RESTART THE APP BY CLICKING THE ICON 我通过点击图标重新启动应用程序
05-12 08:41:30.583: I/global(506): Default buffer size used in BufferedReader constructor. 05-12 08:41:30.583:I / global(506):BufferedReader构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:41:30.623: I/global(506): Default buffer size used in BufferedWriter constructor. 05-12 08:41:30.623:I / global(506):BufferedWriter构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:41:31.663: W/System.err(506): java.security.KeyStoreException: KeyStore jks implementation not found 05-12 08:41:31.663:W / System.err(506):java.security.KeyStoreException:找不到KeyStore jks实现
05-12 08:41:31.663: W/System.err(506): at java.security.KeyStore.getInstance(KeyStore.java:134) 05-12 08:41:31.663:W / System.err(506):位于java.security.KeyStore.getInstance(KeyStore.java:134)
05-12 08:41:31.663: W/System.err(506): at org.jivesoftware.smack.ServerTrustManager.(ServerTrustManager.java:61) 05-12 08:41:31.663:W / System.err(506):位于org.jivesoftware.smack.ServerTrustManager。(ServerTrustManager.java:61)
05-12 08:41:31.674: W/System.err(506): at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:832) 05-12 08:41:31.674:W / System.err(506):在org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:832)
05-12 08:41:31.674: W/System.err(506): at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:268) 05-12 08:41:31.674:W / System.err(506):位于org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:268)
05-12 08:41:31.683: W/System.err(506): at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44) 05-12 08:41:31.683:W / System.err(506):在org.jivesoftware.smack.PacketReader.access $ 000(PacketReader.java:44)
05-12 08:41:31.683: W/System.err(506): at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:71) 05-12 08:41:31.683:W / System.err(506):在org.jivesoftware.smack.PacketReader $ 1.run(PacketReader.java:71)
05-12 08:41:31.984: I/global(506): Default buffer size used in BufferedReader constructor. 05-12 08:41:31.984:I / global(506):BufferedReader构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:41:31.994: I/global(506): Default buffer size used in BufferedWriter constructor. 05-12 08:41:31.994:I / global(506):BufferedWriter构造函数中使用的默认缓冲区大小。 It would be better to be explicit if an 8k-char buffer is required. 如果需要8k字符缓冲区,则最好是明确的。
05-12 08:41:32.043: D/AndroidRuntime(506): Shutting down VM 05-12 08:41:32.043:D / AndroidRuntime(506):关闭VM
05-12 08:41:32.043: W/dalvikvm(506): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 05-12 08:41:32.043:W / dalvikvm(506):threadid = 1:线程以未捕获的异常退出(group = 0x4001d800)
05-12 08:41:32.214: D/dalvikvm(506): GC_FOR_MALLOC freed 5507 objects / 388504 bytes in 147ms 05-12 08:41:32.214:D / dalvikvm(506):GC_FOR_MALLOC在147毫秒内释放了5507个对象/ 388504字节
05-12 08:41:32.226: D/NativeCrypto(506): Freeing OpenSSL session 05-12 08:41:32.226:D / NativeCrypto(506):释放OpenSSL会话
05-12 08:41:32.234: E/AndroidRuntime(506): FATAL EXCEPTION: main 05-12 08:41:32.234:E / AndroidRuntime(506):致命异常:主要
05-12 08:41:32.234: E/AndroidRuntime(506): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.yeswecanclinics.chat/nl.yeswecanclinics.chat.Start}: java.lang.NullPointerException 05-12 08:41:32.234:E / AndroidRuntime(506):java.lang.RuntimeException:无法启动活动ComponentInfo {nl.yeswecanclinics.chat/nl.yeswecanclinics.chat.Start}:java.lang.NullPointerException
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.os.Handler.dispatchMessage(Handler.java:99) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.os.Handler.dispatchMessage(Handler.java:99)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.os.Looper.loop(Looper.java:123) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.os.Looper.loop(Looper.java:123)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread.main(ActivityThread.java:4627)
05-12 08:41:32.234: E/AndroidRuntime(506): at java.lang.reflect.Method.invokeNative(Native Method) 05-12 08:41:32.234:E / AndroidRuntime(506):at java.lang.reflect.Method.invokeNative(本机方法)
05-12 08:41:32.234: E/AndroidRuntime(506): at java.lang.reflect.Method.invoke(Method.java:521) 05-12 08:41:32.234:E / AndroidRuntime(506):at java.lang.reflect.Method.invoke(Method.java:521)
05-12 08:41:32.234: E/AndroidRuntime(506): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-12 08:41:32.234: E/AndroidRuntime(506): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-12 08:41:32.234:E / AndroidRuntime(506):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)05-12 08:41:32.234:E / AndroidRuntime( 506):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-12 08:41:32.234: E/AndroidRuntime(506): at dalvik.system.NativeStart.main(Native Method) 05-12 08:41:32.234:E / AndroidRuntime(506):在dalvik.system.NativeStart.main(本机方法)
05-12 08:41:32.234: E/AndroidRuntime(506): Caused by: java.lang.NullPointerException 05-12 08:41:32.234:E / AndroidRuntime(506):由:java.lang.NullPointerException
05-12 08:41:32.234: E/AndroidRuntime(506): at org.jivesoftware.smackx.muc.MultiUserChat$1.connectionCreated(MultiUserChat.java:114) 05-12 08:41:32.234:E / AndroidRuntime(506):在org.jivesoftware.smackx.muc.MultiUserChat $ 1.connectionCreated(MultiUserChat.java:114)
05-12 08:41:32.234: E/AndroidRuntime(506): at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:618) 05-12 08:41:32.234:E / AndroidRuntime(506):在org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:618)
05-12 08:41:32.234: E/AndroidRuntime(506): at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:565) 05-12 08:41:32.234:E / AndroidRuntime(506):位于org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:565)
05-12 08:41:32.234: E/AndroidRuntime(506): at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:991) 05-12 08:41:32.234:E / AndroidRuntime(506):在org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:991)
05-12 08:41:32.234: E/AndroidRuntime(506): at nl.yeswecanclinics.chat.Start.initConnection(Start.java:131) 05-12 08:41:32.234:E / AndroidRuntime(506):位于nl.yeswecanclinics.chat.Start.initConnection(Start.java:131)
05-12 08:41:32.234: E/AndroidRuntime(506): at nl.yeswecanclinics.chat.Start.onCreate(Start.java:71) 05-12 08:41:32.234:E / AndroidRuntime(506):位于nl.yeswecanclinics.chat.Start.onCreate(Start.java:71)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-12 08:41:32.234: E/AndroidRuntime(506): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 05-12 08:41:32.234:E / AndroidRuntime(506):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-12 08:41:32.234: E/AndroidRuntime(506): ... 11 more 05-12 08:41:32.234:E / AndroidRuntime(506):...还有11个
While Marek's answer is certainly not incorrect (this may in fact be why you are getting a NullPointerException
), one thing I know is that you shouldn't be attempting to make connections on the UI thread. 尽管Marek的回答肯定不是不正确的(事实上这可能就是为什么您得到NullPointerException
),但我知道的一件事是,您不应该尝试在UI线程上建立连接。 This will inevitably cause your application to crash in the case that it takes more than a couple seconds to make a connection. 如果连接需要花费多于几秒钟的时间,这将不可避免地导致您的应用程序崩溃。 You should make an AsnycTask
and do your connection and status changes there. 您应该执行一个AsnycTask
并在那里进行连接和状态更改。
You set in stopConnection
method null
to connection
so when you try to do check if(connection.isConnected())
you receive null
because you set it. 您在stopConnection
方法stopConnection
null
设置为connection
因此当您尝试检查if(connection.isConnected())
会收到null
因为您对其进行了设置。 You should check in startConnection
method if connection
is not null
otherwise you must call initConnection
method. 如果connection
不为null
则应签入startConnection
方法,否则必须调用initConnection
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.