안드로이드 개발 질문/답변
(글 수 45,052)
package com.toast.baseball;
import java.security.SecureRandom;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.Toast;
import android.app.AlertDialog;
import android.content.DialogInterface;
public class BaseballGameActivity extends Activity {
Handler mHandler;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
// 네트워크 연결 관리자의 핸들을 얻습니다.
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// 기본 모바일 네트워크 연결자(3G) 관련 정보를 얻습니다.
NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isMobileConn = ni.isConnected();
// WiFi 관련 정보를 얻습니다.
ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean isWifiConn = ni.isConnected();
if(isWifiConn || isMobileConn) {
Intent imove = new Intent(BaseballGameActivity.this , Main.class);
startActivity(imove);
finish();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("권장!");
builder.setMessage("이 프로그램은 추가 기능을 위해 인터넷 사용을 권장합니다. 설정하시겠습니까?");
builder.setPositiveButton("WiFI설정하기", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent imove = new Intent(BaseballGameActivity.this , Main.class);
startActivity(imove);
finish();
startActivityForResult(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS), 0);
}
});
builder.setNeutralButton("3G설정하기", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent imove = new Intent(BaseballGameActivity.this , Main.class);
startActivity(imove);
finish();
startActivityForResult(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS), 0);
}
});
builder.setNegativeButton("무시하기", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent imove = new Intent(BaseballGameActivity.this , Main.class);
startActivity(imove);
finish();
}
});
builder.show();
}
}
}
onResume이라길래 오버라이드 걸고 했는데 튕기네요 ㅠ
2012.06.14 01:02:16
왜 팅기는지 에러 메세지가 있으면 좋을거 같고요..
onResume 에서 하는일이 딜레이 2000 정도인데 이걸 반듯이 리줌에서 해야 하는지 의문이네요?
다이얼로그가 제대로 호출이 되는지도 의문이고요..
만약 다이얼로그가 제대로 띄워졌다면 버튼을 눌렀을때 죽었는지요?
그리고 보통 finish() 이후에 작업은 안합니다.
근데 finish() 이후에
startActivityForResult(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS), 0);
이렇게 되어 있는데
startActivityForResult 는 결과를 받는 타입이라서 결과를 받았을때를 처리하는 루틴이 반듯이 필요합니다.
즉 호출 부분과 리씨버 부분이 항상 한쌍이 되어야 하는데 그렇게 하셨는지요?
그리고 finish() 되어 버려서 startActivityForResult() 호출이 무의미 한 경우가 발생되는 꼴이 되는데
이경우는 의도한 바가 맞는지요?




아니 뭘할려고하시는건데요.
저렇게해놓으면 당연히 먹통이되는거죠.
아까 말씀드렸는데요ㅡㅡ;
onCreate니 onResume이니 어디다 붙여넣어도 소스 끝날떄까지 화면 먹통된다고.
handler,postDelay를쓰세요