Как запустить службу веб -сервера Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как запустить службу веб -сервера Android?

Сообщение Anonymous »

У меня есть WebServerservice , который я хотел бы запустить, когда нажата кнопка переключения. Та же кнопка также запускает диалог и уведомляет пользователя.startService(new Intent(MyActivity.this, WebServerService.class));
< /code>

Но пользовательский интерфейс приложения замораживает, а диалог не отображается, и прикладная сила закрывается. Код для класса WebServerService < /code>: < /p>

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class WebServerService extends Service {
private WebServer server = null;

@Override
public void onCreate() {
Log.i("HTTPSERVICE", "Creating and starting httpService");
super.onCreate();
server = new WebServer(this);
server.startServer();
}

@Override
public void onDestroy() {
Log.i("HTTPSERVICE", "Destroying httpService");
server.stopServer();
super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
return null;
}
}
< /code>

Я изо всех сил старался заставить это работать. Я также посмотрел на Asynctask , но я не уверен, применимо ли это в моем случае. Любая помощь или указатель в правильном направлении будут высоко оценены.package com.xlnc.webapp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

import org.apache.http.HttpException;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.impl.DefaultHttpServerConnection;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpRequestHandlerRegistry;
import org.apache.http.protocol.HttpService;
import org.apache.http.protocol.ResponseConnControl;
import org.apache.http.protocol.ResponseContent;
import org.apache.http.protocol.ResponseDate;
import org.apache.http.protocol.ResponseServer;

import android.content.Context;

public class WebServer {

public static boolean RUNNING = false;
public static int serverPort = 8080;

private static final String ALL_PATTERN = "*";
private static final String EXCEL_PATTERN = "/*.xls";
private static final String HOME_PATTERN = "/home.html";

private Context context = null;

private BasicHttpProcessor httpproc = null;
private BasicHttpContext httpContext = null;
private HttpService httpService = null;
private HttpRequestHandlerRegistry registry = null;

public WebServer(Context context) {
this.setContext(context);

httpproc = new BasicHttpProcessor();
httpContext = new BasicHttpContext();

httpproc.addInterceptor(new ResponseDate());
httpproc.addInterceptor(new ResponseServer());
httpproc.addInterceptor(new ResponseContent());
httpproc.addInterceptor(new ResponseConnControl());

httpService = new HttpService(httpproc,
new DefaultConnectionReuseStrategy(), new DefaultHttpResponseFactory());

registry = new HttpRequestHandlerRegistry();

registry.register(HOME_PATTERN, new HomeCommandHandler(context));

httpService.setHandlerResolver(registry);
}

private ServerSocket serverSocket;

public void runServer() {
try {
serverSocket = new ServerSocket(serverPort);

serverSocket.setReuseAddress(true);

while (RUNNING) {
try {
final Socket socket = serverSocket.accept();

DefaultHttpServerConnection serverConnection = new DefaultHttpServerConnection();

serverConnection.bind(socket, new BasicHttpParams());

httpService.handleRequest(serverConnection, httpContext);

serverConnection.shutdown();
} catch (IOException e) {
e.printStackTrace();
} catch (HttpException e) {
e.printStackTrace();
}
}

serverSocket.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

RUNNING = false;
}

public synchronized void startServer() {
RUNNING = true;
runServer();
}

public synchronized void stopServer() {
RUNNING = false;
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public void setContext(Context context) {
this.context = context;
}

public Context getContext() {
return context;
}
}
< /code>

edit < /em>:
Вот журналы: < /p>

08-01 22:55:04.406: I/PackageManager(65): /data/app/vmdl40565.tmp changed; unpacking
08-01 22:55:04.550: D/installd(31): DexInv: --- BEGIN '/data/app/vmdl40565.tmp' ---
08-01 22:55:04.637: D/dalvikvm(143): GC freed 2787 objects / 185600 bytes in 239ms
08-01 22:55:05.226: D/dalvikvm(205): DexOpt: load 39ms, verify 132ms, opt 1ms
08-01 22:55:05.236: D/installd(31): DexInv: --- END '/data/app/vmdl40565.tmp' (success) ---
08-01 22:55:05.526: I/installd(31): move /data/dalvik-cache/data@app@vmdl40565.tmp@classes.dex -> /data/dalvik-cache/data@app@com.xlnc.webapp.apk@classes.dex
08-01 22:55:05.526: D/PackageManager(65): New package installed in /data/app/com.xlnc.webapp.apk
08-01 22:55:05.696: D/MountListener(65): handleEvent ums_disabled
08-01 22:55:05.756: D/MountListener(65): handleEvent ums_disconnected
08-01 22:55:05.766: D/AndroidRuntime(162): Shutting down VM
08-01 22:55:05.766: D/dalvikvm(162): DestroyJavaVM waiting for non-daemon threads to exit
08-01 22:55:05.766: D/dalvikvm(162): DestroyJavaVM shutting VM down
08-01 22:55:05.776: D/dalvikvm(162): HeapWorker thread shutting down
08-01 22:55:05.776: D/dalvikvm(162): HeapWorker thread has shut down
08-01 22:55:05.776: D/jdwp(162): JDWP shutting down net...
08-01 22:55:05.776: I/jdwp(162): adbd disconnected
08-01 22:55:05.789: D/dalvikvm(162): VM cleaning up
08-01 22:55:05.826: E/AndroidRuntime(162): ERROR: thread attach failed
08-01 22:55:05.826: D/dalvikvm(162): LinearAlloc 0x0 used 621708 of 5242880 (11%)
08-01 22:55:06.396: D/dalvikvm(65): GC freed 4364 objects / 319160 bytes in 245ms
08-01 22:55:06.596: D/MediaScannerService(179): start scanning volume internal
08-01 22:55:06.716: I/ActivityManager(65): Start proc com.android.mms for broadcast com.android.mms/.transaction.MmsSystemEventReceiver: pid=212 uid=10014 gids={3003, 1015}
08-01 22:55:07.306: D/installd(31): DexInv: --- BEGIN '/system/app/Mms.apk' ---
08-01 22:55:07.476: D/AndroidRuntime(210): >>>>>>>>>>>>>> AndroidRuntime START

Подробнее здесь: https://stackoverflow.com/questions/117 ... er-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»