기본적으로 onStartCommand의 RETURN 값으로 설정하는 것이다.

START_STICKY: 
Service가 강제 종료되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 null로 초기화 시켜서 재시작 합니다. Service 재시작시 intent 값이 null로 초기화 되서 재시작 됩니다.

START_NOT_STICKY:
이 Flag를 리턴해 주시면, 강제로 종료 된 Service가 재시작 하지 않습니다.
시스템에 의해 강제 종료되어도 괸찮은 작업을 진행 할 때 사용해 주시면 됩니다.

START_REDELIVER_INTENT:
START_STICKY와 마찬가지로 Service가 종료 되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 그대로 유지 시켜 줍니다.





// 모델 번호
Build.BOARD
// 브렌드
Build.BRAND
// CPU 정보
Build.CPU_ABI
// 디바이스 ( 모델 번호 )
Build.DEVICE
// 디스플레이 정보
Build.DISPLAY
// -----
Build.FINGERPRINT
// IP 주소
Build.HOST
// 디바이스 고유 아이디
Build.ID
// 제조사
Build.MANUFACTURER
// 모델 번호
Build.MODEL
// 상품명 ( 모델 번호 )
Build.PRODUCT
// ----
Build.TAGS
// 유저 타입
Build.TYPE
// 사용 유저의 정보
Build.USER
// 버전 정보
Build.VERSION.RELEASE




private final int PERMISSIONS_REQUEST_RESULT = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_EXTERNAL_STORAGE)) {
//권한을 거절하면 재 요청을 하는 함수
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_RESULT);
}
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
if (PERMISSIONS_REQUEST_RESULT == requestCode) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "권한 요청이 됐습니다.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "권한 요청을 해주세요.", Toast.LENGTH_SHORT).show();
finish();
}
return;
}
}

그리고 매니페스트에

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

추가 해주면 권한 요청이 완료된다.




가끔 페이지 전환을 할경우 안되는 경우도 있다.

그럴때 매니페스트에 Activity를 적용해줘야한다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.eunice.myapplication">

<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    //여기에 추가를 해주면 된다.
</application>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>



최종 코드
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.eunice.myapplication">

<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".LoginPage" />
</application>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>




처음에 생성되있는 java가 MainActivity.java라고 지정하고
페이지 전환해야될 곳이 LoginPage.java라고 지정한다.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button login = (Button)findViewById(R.id.login_button); //login 변수에 버튼 아이디 추가
        login.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
            Intent intent = new Intent(
                getApplicationContext(),
                LoginPage.class // LoginPage의 클래스 추가
            );
            startActivity(intent); // Activity 실행
        }
    });
}




개인 컴퓨터의 서버라면 아파치 설치 폴더에서 httpd.conf를 설정해줘야 한다.

LoadModule rewrite_module modules/mod_rewrite.so
문구를 찾아서 # ( 주석 ) 을 제거해주고,

AllowOverride None을
AllowOverride All로 변경해준다.

그리고 코드이그나이터 설치한 경로로 가서
.htaccess 파일을 수정해준다. 없으면 index.php와 같은 경로에 임의로 하나 생성한다.

그 후에 config.php 파일로 들어가서
$config['index_page'] = '';

index.php 경로를 삭제해준다.

그리고 난 후에
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase / 
RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule>

이 코드를 추가해주고 저장 후에 테스트.

개인 서버가 아닌 호스팅을 이용하거나 한다면 그냥 .htaccess 파일 생성부터 시작하심 됩니다.
만약에 그렇게 했는데 안될 경우 putty를 이용해서 리눅스에 접속한 다음

# vi 아파치가 있는 경로/httpd.conf
로 접속하셔서 위에 그대로 동일하게 진행해주시면 됩니다.






자바스크립트에서 현재 url을 가져와야하는 상황이 있다.
그럴 때 사용하는 명령어이다.

//경로만 가져오는 명령어
var path = window.location.path;

//경로 전체 ( http:// ) 부터 가져오는 명령어
var url = window.location.href;




<?php
$material= array('양파'=>'3000', '돼지고기'=>'12000', '다진 마늘'=>'2000', '간장'=>'3980');
 
$group_data = array('name'=>'제육볶음');
$group_data['material'] = $material;
 
$output_data = json_encode($group_data, JSON_UNESCAPED_UNICODE);
 
Header('Content-Type: application/json');
print($output_data);
?>




in, cm, mm, pt, pc가 있으며 출력장치(모니터)의 물리적 속성을 아는 경우 효율적
 em, ex, px, %가 있으며 기종간, 플랫폼 간의 호환성을 유지하는데 유리
 
- em : font_size, 해당폰트의 대문자 M의 너비를 기준으로 함.
- ex : x-height, 해당폰트의 소문자 x의 높이를 기준으로 함.
- px : pixel, 표시장치(모니터)에 따라서 상대적인 크기를 가짐.
- %  : percent, 기본글꼴의 크기에 대하여 상대적인 값을 가짐.
- pt  : point, 일반 문서(워드 등)에서 많이 사용하는 단위
 

대부분의 브라우저는 폰트 사이즈의 기본값이 12pt, 16px, 1em, 100% 입니다. 예를 들어, 본문 전체가 12pt으로 설정되어 있는 상태에서 본문내의 테이블에서는 좀더 작은 9pt를 사용하고자 한다면, em단위로 본문의 폰트사이즈는 1em이 되고 테이블내 폰트사이즈는 0.75em이 되는 것입니다.


px
em
%
pt
6px
0.375em
37.5%
5pt
7px
0.438em
43.8%
5pt
8px
0.5em
50%
6pt
9px
0.563em
56.3%
7pt
10px
0.625em
62.5%
8pt
11px
0.688em
68.8%
8pt
12px
0.75em
75%
9pt
13px
0.813em
81.3%
10pt
14px
0.875em
87.5%
11pt
15px
0.938em
93.8%
11pt
16px
1em
100%
12pt
17px
1.063em
106.3%
13pt
18px
1.125em
112.5%
14Pt
19px
1.188em
118.8%
14pt
20px
1.25em
125%
15pt
21px
1.313em
131.3%
16pt
22px
1.375em
137.5%
17pt
23px
1.438em
143.8%
17pt
24px
1.5em
150%
18pt





일단 주석부터 알아보겠다.

HTML에서는 주석이 // 이거나 /* */ 이것들이 안먹힌다.

HTML에는 주석이 다르게 적용된다.

<!-- 주석의 코드 예 --> 주석은 이런식으로 달면된다.


띄어쓰기의 경우에는 한칸 스페이스바 하면 먹히긴 한다.

하지만 100번 스페이스바로 띄워도 적용이 안되는걸 볼수 있다.
그 이유는 HTML에서 띄어쓰기 코드가 따로있기 때문이다.

바로 &nbsp; 이다.
세미콜론까지 적용해야된다.

또, 선 긋는 태그는
hr 태그이다.

hr태그의 속성 변경 방법으론
style 시트에 hr 태그를 직접 적용하셔도 되고, 태그 안에 인라인 스타일로 넣어도 된다.
또 hr 속성으로 noshade 속성이 있는데, 이건 음영 효과 없이 선을 긋는다는 것이다.



'WEB > HTML' 카테고리의 다른 글

[HTML] link 태그 사용법  (0) 2017.12.12
[HTML] 메타(meta) 태그  (0) 2017.12.12
[HTML] class와 id의 정의  (0) 2017.12.05
[HTML] 모바일 확대 방지  (0) 2017.11.29
[HTML] <table> 태그  (0) 2017.11.27

+ Recent posts