как у вас есть CSS-заполнение вокруг многострочного div

Основываясь на предложении из предыдущего вопроса, который я задавал здесь, я пытаюсь протолкнуть свое сокет-соединение для приложения, которое я написал в службу. Вчера я провел большую часть дня, исследуя службы, и фактически смоделировал несколько (один удаленный, один локальный).

Мой вопрос состоит из двух частей:

1) после того, как я поигрался как с локальной службой, так и с удаленное обслуживание, я все еще не уверен, какой из них лучше всего подходит для моей ситуации. Это в значительной степени связано с тем, что, как мне кажется, я до сих пор не совсем понимаю, какие преимущества дает мне работа в другом «процессе». Я создаю новый поток для подключения к сокету, несмотря ни на что, поэтому у меня не будет конфликта потоков с пользовательским интерфейсом. Так что же позволяет мне сделать включение службы в другой процесс? Увижу ли я таким образом лучшую производительность? Мое ограниченное понимание заключается в том, что если поместить его в другой процесс, служба будет работать независимо от того, какие действия я выполняю в своем приложении. У меня есть несколько разных действий, но только для одного из них требуется соединение с сокетом, которое я все равно буду перестраивать каждый раз, когда это действие открывается. Могу ли я воспользоваться локальной службой?

2) Я собираюсь иметь "слушатель" сокета (DataInputStream (). ReadLine () внутри цикла while) для любых новых данных, которые передается с сервера. После игры, которую я сделал вчера, я не мог понять, как передать данные, которые он читает, фактическому «клиенту» (либо привязанному клиенту удаленной службой, либо или сам локальный клиент) в "реальном времени".

Был бы очень признателен за некоторые предложения по части 1 и некоторую помощь по части 2 (примеры кода? :))

TIA

Изменить: добавлен код моей службы - идет с локальной службой

Класс обслуживания:

   public class SocketService extends Service {

    Socket s;
    PrintStream os;

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return myBinder;
    }

    private final IBinder myBinder = new LocalBinder();

    public class LocalBinder extends Binder {
        public SocketService getService() {
            return SocketService.this;
        }
    }


    @Override
    public void onCreate() {
        super.onCreate();
        s = new Socket();
    }

    public void IsBoundable(){
        Toast.makeText(this,"I bind like butter", Toast.LENGTH_LONG).show();
    }

    public void onStart(Intent intent, int startId){
        super.onStart(intent, startId);
        Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
        Runnable connect = new connectSocket();
        new Thread(connect).start();
    }

    class connectSocket implements Runnable {

        @Override
        public void run() {
            SocketAddress socketAddress = new InetSocketAddress("192.168.1.104", 4505);
            try {               
                s.connect(socketAddress);
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        try {
            s.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        s = null;
    }
}

Действие, которое вызывает службу:

public class SocketServiceController extends Activity {

        private SocketService mBoundService;
        private Boolean mIsBound;
        public SocketServiceController ssc;
       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ssc = this;
            setContentView(R.layout.main);

            Button start = (Button)findViewById(R.id.serviceButton);
            Button stop = (Button)findViewById(R.id.cancelButton);

            start.setOnClickListener(startListener);
            stop.setOnClickListener(stopListener);

       }

       private ServiceConnection mConnection = new ServiceConnection() {
            public void onServiceConnected(ComponentName className, IBinder service) {
                mBoundService = ((SocketService.LocalBinder)service).getService();

            }
            public void onServiceDisconnected(ComponentName className) {
                mBoundService = null;
            }
        };

        private void doBindService() {
            bindService(new Intent(SocketServiceController.this, SocketService.class), mConnection, Context.BIND_AUTO_CREATE);
            mIsBound = true;
            mBoundService.IsBoundable();
        }


        private void doUnbindService() {
            if (mIsBound) {
                // Detach our existing connection.
                unbindService(mConnection);
                mIsBound = false;
            }
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            doUnbindService();
        }


       private OnClickListener startListener = new OnClickListener() {
        public void onClick(View v){
            startService(new Intent(SocketServiceController.this,SocketService.class));
            doBindService(); 

        }               
       };

       private OnClickListener stopListener = new OnClickListener() {
            public void onClick(View v){
                stopService(new Intent(SocketServiceController.this,SocketService.class));
            }               
          };
}
5
задан Kyle 1 September 2010 в 19:00
поделиться