/Users/{user_id}/.subversion/config 파일 열어서 내용 추가

global-ignores = *.o *.lo *.la *.al *.so *.so.[0-9]* *.a *.pyc *.pyo
   *.rej *~ #*# .#* .*.swp .DS_Store
   .idea target .git .classpath .project .settings *.iml *.log *.bak *.class *.war *.ear 
   node_modules pom.xml.versionsBackup build local.properties 




Preferences -> Version Control -> Ignored Files


  • File:.idea/workspace.xml
  • File: .gradle
  • Directory: build/
  • Mask: *.iws
  • Directory: .idea/libraries/
  • Directory: app/build/
  • File: local.properties



https://www.liferay.com/web/igor.spasic/blog/-/blogs/global-ignore-files-on-svn-or-how-to-ignore-inteliij-files-at-once


 아래 코드처럼 Handler 객체를 생성하면 "This Handler class should be static or leaks might occur" 경고 메시지가 뜬다. Handler 객체가 정적인 상태가 아니면 메모리 누수가 발생할 수 있다고 경고하는 것인데 해결법을 알아보자.

private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
mIsPressBackKey = false;
// 2초가 지나면 다시 Falg 를 false로 바꾼다.
debugMessage("handleMessage mFlag : " + mIsPressBackKey);
break;
}
}
};


 메시지 큐에 타켓 핸들러를 가지고 있는 메시지들이 있는 동안, 그 핸들러는 가비지 콜랙션되지 않는다. 

만약에 핸들러가 정적 상태가 아니라면 Activity나 Service는 종료 되더라도 가비지 콜렉션 되지 않는다. 따라서 가비지콜렉터가 메모리를 정리하기 위해서 아래 해결법 처럼 수정해야 한다.



해결법

static class BackkeyProcHandler extends android.os.Handler {
private final WeakReference<MainActivity> mMainFrameActivity;

public BackkeyProcHandler(MainActivity activity) {
mMainFrameActivity = new WeakReference<MainActivity>(activity);
}

@Override
public void handleMessage(Message msg)
{
MainActivity act = mMainFrameActivity.get();
if(act == null) return;

switch (msg.what) {
case 0:
// 2초가 지나면 다시 Falg 를 false로 바꾼다.
act.mIsPressBackKey = false;
break;
}
}
}


참조 : http://stackoverflow.com/questions/11407943/this-handler-class-should-be-static-or-leaks-might-occur-incominghandler

http://d2.naver.com/helloworld/329631


안드로이드 스튜디오에서 Generate signed APK 진행 시 아래의 오류가 날 경우, Key store password와 Alias password가 동일해서 나는 오류 같음.

keytool error Keystore was tampered with, or password was incorrect


때문에 keytool 명령을 이용해서 key store password와 alias 패스워드를 서로 다르게 변경하니 

signed APK가 제대로 생성됨.




해결법

Error


java.io.IOException: Cannot recover key

Solution

The KeyStore password and The Key password should be the same :)
Changing both passwords using keytool

Change KeyStore password
keytool -storepasswd -new newpassword -keystore KeyStore.jks
Change Alias key Password
keytool -keypasswd -alias MyKeyAlias -new newpassword -keystore KeyStore.jks

Note: supply old password for both keystore and alias when asked for 






String str1 = “Hello World!”;

// 변수 str1의 바이트 값

// 72101108108111328711111410810033

bytes[] buffers = str1.getBytes(); 

// 바이트 배열 자체의 문자열 값

// [B@ca0b6

String buffersArrayString = buffers.toString();

// 바이트 배열을 문자열로 변환한 값

// Hello World!

String str2 = new String(buffers);


참조 : http://roadrunner.tistory.com/139


가로 모드 : Landscape

세로 모드 : Portrait



1. Manifaest에서 속성으로 고정하기


화면을 portrait(세로) 화면으로 고정하고 싶은 경우

<activity android:name="com.example.appname.ActivityName"

    android:theme="@style/AppTheme"

    android:screenOrientation="portrait"

</activity>



화면을 landscape(가로) 화면으로 고정하고 싶은 경우

<activity android:name="com.example.appname.ActivityName"

    android:theme="@style/AppTheme"

    android:screenOrientation="landscape">

</activity>




2. 액티비티 실행시 onCreate() 메소드 내부에 지정하기


화면을 portrait(세로) 화면으로 고정하고 싶은 경우

@Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);


        // 화면을 portrait(세로) 화면으로 고정하고 싶은 경우         

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


        // setContentView()가 호출되기 전에 setRequestedOrientation()이 호출되어야 함

        setContentView(R.layout.main);        

    }



화면을 landscape(가로) 화면으로 고정하고 싶은 경우

@Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);


        // 화면을 landscape(가로) 화면으로 고정하고 싶은 경우         

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


        // setContentView()가 호출되기 전에 setRequestedOrientation()이 호출되어야 함         

        setContentView(R.layout.main);

    }



Android Studio에서 finished with non-zero exit value 2 오류가 날 경우, 라이브러리 중복 확인과 함께 아래 링크 내용을 확인 하면 된다.


http://stackoverflow.com/questions/28640314/android-studio-fails-to-debug-with-error-org-gradle-process-internal-execexcepti?answertab=oldest#tab-top



해결법

app 레벨에 있는 build.gradle에서 아래와 같이 입력

defaultConfig {
    multiDexEnabled true
}



최신 Android Studio, Google Cloud Messaging 3.0(GCM)을 이용하여 Android 푸시 서비스 구현하기

http://blog.saltfactory.net/android/implement-push-service-via-gcm.html


http://wowan.tistory.com/120



+ Recent posts