2011-02-04 4 views
1

Я создал простой веб-сервер, который работает на устройстве Android, который в основном реагирует на Hello World, который работал до предварительного просмотра 11. Было ли какое-то серьезное изменение, из-за которого это перестало работать или было Я что-то делаю неправильно? Приложение вылетает из контекста. Response.OutputStream.Write (buffer, 0, buffer.Length);MonoDroid простой веб-сервер

Код:

public class Activity1 : Activity 
{ 
    private HttpListener listener; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Main); 

     // Get our button from the layout resource, 
     // and attach an event to it 
     var button = FindViewById<Button>(Resource.Id.MyButton); 

     button.Click += button_Click; 
    } 

    private void button_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      if (!HttpListener.IsSupported) 
       return; 

      listener = new HttpListener(); 
      listener.Prefixes.Add("http://+:8001/"); 
      listener.Start(); 
      listener.BeginGetContext(HandleRequest, listener); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

    private void HandleRequest(IAsyncResult result) 
    { 
     HttpListenerContext context = listener.EndGetContext(result); 

     string response = "<html>Hello World</html>"; 
     byte [] buffer = Encoding.UTF8.GetBytes(response); 

     context.Response.ContentLength64 = buffer.Length; 
     context.Response.OutputStream.Write(buffer, 0, buffer.Length); 
     context.Response.OutputStream.Close(); 

     listener.BeginGetContext(HandleRequest, listener); 
    } 
} 

журнала:

I/ActivityManager (112): Процесс torqsoftware.testwebserver (ИДП 3044) умер.

I/WindowManager (112): WIN СМЕРТЬ: Окно {44d15120 torqsoftware.testwebserver/monodroidwebservertest.Activity1 паузу = FALSE}

Д/зиготу (58): Process 3044 завершается сигналом (4)

в/RenderScript_jni (199): surfaceCreated

в/RenderScript_jni (199): surfaceChanged

I/UsageStats (112): Неожиданное резюме из com.android.launcher в то время уже возобновлено в torqsoftware.testwebserver

W/InputManagerService (112): Got RemoteException отправки SetActive (ложь) уведомление Pid 3044 UID 10062

Благодаря Лео

+2

Возможно, вы захотите добавить часть файла журнала с исключением. http://monodroid.net/Documentation/Guides/Android_Debug_Log – jpobst

+0

журнал не очень полезен, но вот он – leonardo

ответ

2

Это, кажется, связано с тем, что активность является "приостановлено" когда пользователь переходит к другому приложению в android. Как и в этом случае, вы можете открыть браузер для доступа к http-серверу, который работает в приостановленной деятельности. Я предлагаю вам использовать http-сервер как службу, а не как действие.