protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_main);

          Toast.makeText(getApplicationContext(), "onCreate()", Toast.LENGTH_SHORT).show();

      }


@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

        Toast.makeText(getApplicationContext(), "onDestroy()", Toast.LENGTH_SHORT).show();

}


@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

        Toast.makeText(getApplicationContext(), "onPause()", Toast.LENGTH_SHORT).show();

}


@Override

protected void onRestart() {

// TODO Auto-generated method stub

super.onRestart();

        Toast.makeText(getApplicationContext(), "onRestart()", Toast.LENGTH_SHORT).show();

}


@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

        Toast.makeText(getApplicationContext(), "onResume()", Toast.LENGTH_SHORT).show();

}


@Override

protected void onStart() {

// TODO Auto-generated method stub

super.onStart();

        Toast.makeText(getApplicationContext(), "onStart()", Toast.LENGTH_SHORT).show();

}


@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

        Toast.makeText(getApplicationContext(), "onStop()", Toast.LENGTH_SHORT).show();

}


7가지의 생명주기를 눈으로 확인해 볼 수 있다.


onDestroy 는 finish 하여야 종료가 된다.

'개발자 > Android' 카테고리의 다른 글

Android 사칙연산 계산기 소스  (2) 2013.02.14
안드로이드 Locat 에 text 출력하기  (0) 2013.02.14
블로그 이미지

김진리

,

Object 소켓 서버.zip


클라는 압축파일안에.


package PC;


import java.io.IOException;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;


public class ChatServer {


public static void main(String[] args) throws IOException{

int i=1;

ServerSocket sSocket = new ServerSocket(3000);

System.out.println("PC방 개업 시작...");

while(true){

ObjectInputStream ois = null;

ObjectOutputStream oos = null;

Socket socket = sSocket.accept();

System.out.println(socket + "손님 입장");

oos = new ObjectOutputStream(socket.getOutputStream());

ois = new ObjectInputStream(socket.getInputStream());


ChatRunner cr = new ChatRunner(socket,ois,oos,i);

cr.start();

i++;

}

}

}





package PC;


import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;

import java.util.ArrayList;


public class ChatRunner extends Thread {

private boolean flag = false;

private Socket socket = null;

private Data data = null;

private int client=0;

private int count=0;


ObjectInputStream ois = null;

ObjectOutputStream oos = null;

public ChatRunner(Socket socket,ObjectInputStream ois, ObjectOutputStream oos, int client) throws IOException {

this.socket = socket;

this.ois = ois;

this.oos = oos;

this.client = client;

}


public void run() {

try {


while (!flag) {

// 가격 리스트 측정

ArrayList<String> glist = new ArrayList<String>();

ArrayList<String> flist = new ArrayList<String>();

int[] gamemoney = new int[10];

int[] foodmoney = new int[10];

glist.add("서든어택");    gamemoney[0]=2000; glist.add("리니지"); gamemoney[1]=3000;

glist.add("LOL");      gamemoney[2]=4000; glist.add("넷마블"); gamemoney[3]=1500;

glist.add("스타크래프트");  gamemoney[4]=1000;

flist.add("피자");  foodmoney[0]=12000; flist.add("냠냠과자"); foodmoney[1]=1000;

flist.add("햄버거");  foodmoney[2]=6000; flist.add("짜장면");   foodmoney[3]=5500;

flist.add("뽀글이");    foodmoney[4]=2200;

// Data Object에 가격 셋팅 하기

data = new Data();

data.setClientNum(client);

data.setCount(-1);

data.setGame(glist);

data.setGamemoney(gamemoney);

data.setFood(flist);

data.setFoodmoney(foodmoney);

if(count==0){

oos.writeObject(data);

System.out.println(client + " : 번 손님의 PC 실행!");

count++;

}

else{

flag=true;

}

}

data = (Data)ois.readObject();

int time = data.getTotaltime();

int money = data.getTotalmoney();

int num = data.getClientNum();

System.out.println(num +" 의 손님의 총 플레이시간  : " + time + " 총 금액 : " + money);

System.out.println("안녕히가세요!");

oos.close();

ois.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}



블로그 이미지

김진리

,

st1 = "abcd";

st2 = "abcd";


두개의 메모리 주소는 st1가 생성하였던 메모리 주소에 그대로 st2 를 가리키게 된다.

원리는 java의 jvm 이 전에 생성하였던 변수정보를 한번 읽어서 다시 분배 하기 때문에 같은 메모리를 가르키게 된다


st1 = new String("abcd");

st2 = new String("abcd");


는 인스턴스화 되어서 heap 영역에 st1 st2 각자 메모리가 생성되므로 같은 주소를 가르키지 않게 된다.

'개발자 > Java' 카테고리의 다른 글

el 태그 ${}  (0) 2013.03.05
Object 직렬화를 사용한 통신  (0) 2013.02.13
Java 제너릭 사용 예제  (0) 2013.01.30
TreeMap 구현 분석  (0) 2013.01.29
Access Constrol ( 접근제어 ) 3가지  (0) 2013.01.28
블로그 이미지

김진리

,