关于android多个activity共享一个service中的socket问题
SocketService.java[/color]
package com.braveboyny.smartsecurity;
import java.net.Socket;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
//Handler
public class SocketService extends Service {
private static final String TAG = "MyService";
private boolean isConnect=false;
public static Socket socket; //这里定义了一个静态socket 供其他activity使用
@Override
public void onCreate(){
Log.v(TAG, "onCreate");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
Log.v(TAG, "onStart");
new Thread() {
@Override
public void run() {
if(isConnect==false)
initSocket();
}
}.start();
}
private void initSocket() {
try {
Log.v(TAG, "iniSocket");
socket = new Socket("192.168.1.90", 8008);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[color=#FF0000]MainActivity.java
package com.braveboyny.smartsecurity;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
private boolean initial;
private Button start;
private ImageView imageView;
private Handler handler;
private BufferedInputStream bin;
@SuppressWarnings("unused")
private BufferedOutputStream bout;
private void init() {
Log.e("init==", "xxxxxxxxx");
imageView = (ImageView) this.findViewById(R.id.imageview);
start = (Button) this.findViewById(R.id.start);
start.setOnClickListener(this);
handler = new MyHandler();
initial = false;
}
@Override
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImageView imageview = (ImageView) this.findViewById(R.id.imageview);
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.picture);
imageview.setImageBitmap(bm);
Intent intent = new Intent(this, SocketService.class);
startService(intent);
init();
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
switch (item.getItemId()) {
case R.id.mi1:
intent = new Intent(MainActivity.this, ContactActivity.class);
startActivity(intent);
break;
case R.id.mi2:
intent = new Intent(MainActivity.this, ControlActivity.class);
startActivity(intent);
break;
case R.id.mi3:
intent = new Intent(MainActivity.this, SetingActivity.class);
startActivity(intent);
break;
case R.id.mi4:
new AlertDialog.Builder(this)
.setTitle("SmartSecurity")
.setMessage("Copyright@2014,braveboyny,All Rights Reserved ")
.setPositiveButton("确定", null)
.show();
break;
}
return true;
}
@Override
public void onClick(View v) {
new MyThread().start();
}
class MyThread extends Thread {
@Override
public void run() {
try {
if (initial == false) { //在这里直接用Service中的socket
bin = new BufferedInputStream(SocketService.socket.getInputStream());
bout = new BufferedOutputStream(SocketService.socket.getOutputStream());
OutputStream out = SocketService.socket.getOutputStream();