분류 전체보기
-
JNIEnv* 와 jclassAndroid 2012. 11. 13. 15:24
JNIEnv*JNI 인터페이스 포인터는 자바 메쏘드와 매핑되는 각 네이티브 함수(i.e., c/c++ 함수)를 위한 매개 변수로 전달된다. 이 포인터(매개변수)는 JNI환경에 있는 함수들과 상호작용하도록 해 준다. JNI 인터페이스 포인터는 저장될 수 있으나 오로지 현재의 쓰레드(동작 중인 쓰레드)에서 유효한 상태(사용 가능한 상태)로 유지된다. 다른 쓰레드들(정지 혹은 휴면 상태로 된 쓰레드들)은 먼저 반드시 AttachCurrentThread() 메소드를 호출하여 VM에 자신을 연결하고 JNI 인터페이스 포인터를 획득해야 한다. 일단 연결이 되고 나면 네이티브 쓰레드는 네이티브 메쏘드에서 동작하는 정상적인 자바쓰레드처럼 동작한다. 이 네이티브 쓰레드는 자신이 연결 해제하기 위해 DetachCurren..
-
JNI를 Xcode이용하기Android 2012. 11. 13. 12:03
JNI를 공부하는데 Mac에서는 C혹은 C++코딩을 하기위해서는 Xcode를 이용해야한다. 그러나 Xcode를 이용해본적이 없는 나로서는 어려웠다. http://crystalcube.co.kr/119 이 블로그의 글에서 친절히 설명이 나와있었다 그러나 한가지점 User Header Search Paths에 jni.h 헤더파일이 있는 경로를 추가해줘도 계속 jni.h file not found. 에러가 뜨면서 동작하지 않았다. 이 문제는 User Header Search Paths가 아니라 Header Search Paths에 추가해줌으로써 간단히 해결되었다.
-
Fragment(2)Android 2012. 11. 12. 14:13
당연히 Activity와는 다른 생명주기를 갖기때문에 fragment를 사용하는 개념은 액티비티와는 완전히 다르다. 모든 것은 FragmentManager를 통해 독립적으로 관리된다. 액티비티는 UI중심 즉 각각의 layout파일 중심으로 작동하면 된다고 생각하면되나 fragment는 fragmentManager중심이라고 생각하는 것이 맞다.한 가지 예를 들어보자면 fragment는 혼자서 보일수는 없다 반드시 액티비티에 포함되어야한다. 하지만 그렇다고 해도 액티비티가 다시 생성되어서 모든 정보가 초기화되어도 fragmentManager에 기록된 정보는 그대로 살아 있다. 액티비티가 onCreate부터 다시 불리더라도 이전에 만들어서 fragmentManager에 add해둔 fragment는 아직 살아있..
-
fragment에서 attach, detach method!Android 2012. 11. 12. 11:24
fragmentManager에 추가된 fragment를 어떻게 떼어내어 다시 fragment로 만들수 있을까? 혹은 이미 있는 fragment를 어떻게 다시 붙일수 있을까? 이때 attach와 detach메소드가 있다. 먼저 reference를 보자 public abstract FragmentTransaction attach (Fragment fragment)Re-attach a fragment after it had previously been deatched from the UI with detach(Fragment). This causes its view hierarchy to be re-created, attached to the UI, and displayed.ParametersfragmentT..
-
Fragment 에서 방향 전환시 null 체크Android 2012. 11. 9. 18:55
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Log.e("온크리에이트", "입니다."); if(getSupportFragmentManager().findFragmentByTag("listfra") == null){ FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ListViewFragment lvf = new ListViewFragment(); ..
-
Fragment를 이용한 TabActivityAndroid 2012. 11. 9. 17:57
MainActivity.java package com.example.hellotabfragment; import java.util.HashMap; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.View; import android.widget.TabHost; import com.example.hellotabfragment.f..
-
Fragment(1)Android 2012. 11. 9. 15:42
개인적인 생각으로 Fragment는 객체화시킬수 있는 서브 액티비티라는 생각이다. 액티비티자체는 객체화 시킬수 없어 사용에 불편함이 있다. 그러나 프래그먼트는 객체화가 가능하여 유연성있게 사용할 수 있다. 그리고 단독으로는 사용할 수 없다. 액티비티안에 사용할 수 있다. 액티비티 끼리는 인텐트를 주고받지만 프래그먼트는 argument로 값을 주고 받는다. 그런데 프래그먼트를 생성할때마다 Bundle을 만들어 아규먼트를 전달 받고 전달하는 것은 낭비라는 생각이 들어 메소드를 만든다. static TextFragment newInstance(String _msg){ TextFragment tf = new TextFragment(); Bundle bundle = new Bundle(); bundle.putSt..
-
생명주기 메소드를 Override할때 super의 위치Android 2012. 11. 8. 10:26
전부터 궁금했던것 Override를 하였을때 부모의 원메소드를 호출할때 super를 사용한다.그런데 super를 먼저 사용하기도 하고 나중에 사용하기도 한다. 안드로이드 경우 보통 생명주기에 관한 메소드를 오버라이드 할때 자주 사용하는데 이때에 한해 언제 사용하는게 좋은지 궁금했다. 안드로이드쪽으로 유명한 블로거 커니님이 관련된 내용의 포스트를 하셔서 자세한 내용을 물어보았다.http://androidhuman.tistory.com/entry/안드로이드를-위한-자바-오버로딩Overloading-오버라이딩Overriding의-이해Kaylab오버라이드인 경우 꼭 super.onCreate(); 라인 밑에다가 자신이 해야할 일들을 작성해야 하는 이유가 있나요? 작성된 소스들을 보거나 실제로 해봐도 그전이나 그..