创建UDP服务器时出现致命错误 [英] Fatal error while creating UDP Server
本文介绍了创建UDP服务器时出现致命错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我正在使用此代码,但它提供了我无法追踪的错误。任何帮助都会受到赞赏。这是代码:
package com.example.test ;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends 活动{
TextView显示;
private MyDatagramReceiver myDatagramReceiver = null;
受保护 void onResume(){
myDatagramReceiver = new MyDatagramReceiver();
myDatagramReceiver.start();
}
受保护 void onPause(){
// myDatagramReceiver.kill();
}
@覆盖
受保护 void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
display =(TextView)findViewById(R.id.textView1);
}
@ Override
public boolean onCreateOptionsMenu(菜单菜单){
// 膨胀菜单;如果项目存在,则会将项目添加到操作栏。
getMenuInflater()。inflate(R.menu.main,menu);
return true;
}
private class MyDatagramReceiver extends 线程{
private boolean bKeepRunning = true;
private String lastMessage = ;
public void run(){
String 消息;
byte [] lmessage = new byte [ 100 ];
尝试 {
DatagramSocket socket = new DatagramSocket( 2690 );
Log.v( 运行, Socket Created);
while (bKeepRunning){
DatagramPacket packet = new DatagramPacket(lmessage,lmessage) 。长度);
socket.receive(packet);
message = new String (lmessage, 0 ,packet.getLength());
lastMessage = message;
runOnUiThread(updateTextMessage);
Log.v( 接收, packet recvd);
}
if (socket!= null){
socket.close();
Log.v( SOC, 套接字关闭);
}
} catch (Throwable e){
e.printStackTrace();
}
}
public void kill(){
bKeepRunning = false;
}
public String getLastMessage(){
return lastMessage;
}
}
private Runnable updateTextMessage = new Runnable(){
public void run(){
if (myDatagramReceiver == null) return ;
display.setText(myDatagramReceiver.getLastMessage());
}
};
}
以下是错误:
11-14 03:04:06.240:E / AndroidRuntime(881):致命异常:主
11-14 03:04:06.240:E / AndroidRuntime(881) :进程:com.example.test,PID:881
11-14 03:04:06.240:E / AndroidRuntime(881):java.lang.RuntimeException:无法恢复活动{com.example.test / com .example.test.MainActivity}:android.util.SuperNotCalledException:Activity {com.example.test / com.example.test.MainActivity}没有调用super.onResume()
11-14 03:04 :06.240:E / AndroidRuntime(881):java.lang.RuntimeException:无法恢复活动{com.example.test / com.example.test.MainActivity}:android.util.SuperNotCalledException:Activity {com.example.test / com.example.test.MainActivity}没有调用super.onResume()
11-14 03:04:06.240:E / AndroidRuntime(881):引起:android.util.SuperNotCalledException:Activity {com .example.test / com.example.test.MainActivity}没有打电话给super.onResume()
谢谢
解决方案
错误消息
没有打电话给super.onResume()
告诉你究竟出了什么问题。另请参见 http://developer.android.com/training/basics/activity-lifecycle/pausing。 html [ ^ ]
Hi all,
I am using this code but it gives errors i am unable to trace.Any help would be appreciated.Here is the code:
package com.example.test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView display;
private MyDatagramReceiver myDatagramReceiver = null;
protected void onResume() {
myDatagramReceiver = new MyDatagramReceiver();
myDatagramReceiver.start();
}
protected void onPause() {
// myDatagramReceiver.kill();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
display=(TextView) findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private class MyDatagramReceiver extends Thread {
private boolean bKeepRunning = true;
private String lastMessage = "";
public void run() {
String message;
byte[] lmessage = new byte[100];
try {
DatagramSocket socket = new DatagramSocket(2690);
Log.v("Run", "Socket Created");
while(bKeepRunning) {
DatagramPacket packet = new DatagramPacket(lmessage, lmessage.length);
socket.receive(packet);
message = new String(lmessage, 0, packet.getLength());
lastMessage = message;
runOnUiThread(updateTextMessage);
Log.v("Receiving", "packet recvd");
}
if (socket != null) {
socket.close();
Log.v("SOC", "Socket closed");
}
} catch (Throwable e) {
e.printStackTrace();
}
}
public void kill() {
bKeepRunning = false;
}
public String getLastMessage() {
return lastMessage;
}
}
private Runnable updateTextMessage = new Runnable() {
public void run() {
if (myDatagramReceiver == null) return;
display.setText(myDatagramReceiver.getLastMessage());
}
};
}
Following are the errors:
11-14 03:04:06.240: E/AndroidRuntime(881): FATAL EXCEPTION: main
11-14 03:04:06.240: E/AndroidRuntime(881): Process: com.example.test, PID: 881
11-14 03:04:06.240: E/AndroidRuntime(881): java.lang.RuntimeException: Unable to resume activity {com.example.test/com.example.test.MainActivity}: android.util.SuperNotCalledException: Activity {com.example.test/com.example.test.MainActivity} did not call through to super.onResume()
11-14 03:04:06.240: E/AndroidRuntime(881): java.lang.RuntimeException: Unable to resume activity {com.example.test/com.example.test.MainActivity}: android.util.SuperNotCalledException: Activity {com.example.test/com.example.test.MainActivity} did not call through to super.onResume()
11-14 03:04:06.240: E/AndroidRuntime(881): Caused by: android.util.SuperNotCalledException: Activity {com.example.test/com.example.test.MainActivity} did not call through to super.onResume()
Thanks
解决方案
The error message
did not call through to super.onResume()
tells you exactly what is wrong. See also http://developer.android.com/training/basics/activity-lifecycle/pausing.html[^].
这篇关于创建UDP服务器时出现致命错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文