创建UDP服务器时出现致命错误 [英] Fatal error while creating UDP Server

查看:127
本文介绍了创建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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆