728x90

 몇년 사이에 신규로 프로젝트를 생성한다면, AppCompatActivity부터 마주하는 분들이 있을 것 같습니다. 그러나 저처럼 오래된 프로젝트 코드를 마주하면, Activity와 AppCompatActivity를 함께 발견할 수 있습니다.

 


AppCompatActivity는 안드로이드의 하위버전을 지원하는 Activity의 일종입니다.


 

  Activity에서 사용하는 메소드의 API Level을 확인하면, 메소드에 따라 안드로이드 운영체제의 버전이 다른 경우가 존재합니다. (이건 비단 Activity뿐만이 아니라 모든 컴포넌트들에 해당되는 이야기겠지요.) 

  Android 3.0(API level 11)부터, 기존 디폴트 테마를 사용하는 모든 Activitiy들은 app bar로 ActionBar를 가지고 있습니다. 그러나 app bar에는 다양한 안드로이드 버전이 릴리즈되면서 점진적으로 새로운 특징들이 추가 되었습니다. 그 결과, 네이티브 액션바는 기기가 지원할 수 있는 안드로이드 시스템의 버전에 따라 이를 다르게 의존하는 형태로 바뀌게 됩니다. 이와 대조적으로 최신 특징들은 툴바의 support library 버전에 추가 되면서, support lirary를 사용할 수 있는 어느 기기에서도 사용 가능하게 됩니다.

 

  물론 최신기능만이 탑재된 최신 OS 버전의 앱만 만든다면 상관없겠지만, 혹시라도 국내보다 구형기계를 많이 사용하는 지역, 즉 해외 수출용으로 모든 운영체제에 100% 지원이 되어야한다면? 타겟으로 하는 OS 이외에도 하위버전을 얼마나 커버하는 지를 확인 해야 합니다. 

 

  예전에는 경우에 따라 이 Support Library의 버전도 확인해야 했습니다. 그러나 이제는 Support Library가 아닌 AndroidX로 개별 개발자의 고생이 많이 덜어지도록 전환되었기 때문에, 이 부분만 알고 잘 연결한다면 Acitivty에 대한 문제는 거의 없지 않을까 싶네요.

 

  따라서 여러 하위버전을 매번 확인하기 번거롭고, 혹시나하여 안전하게 지원하고 싶다면, AppCompatActivity는 항상 옳은 선택입니다. 

 

디저트가 너무 많아...

 

 Activity를 AppCompatActivity로 전환하기 위해서는 

 1) extends에서 AppCompatActivity로 변경

 2) AndoridManifest.xml에서 해당 클래스를 아래처럼 변경

1
2
3
4
5
6
7
<activity
    android:name="변경 액티비티 경로"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    android:windowSoftInputMode="stateHidden" />
 
cs

theme은 다음 설정을 내포하고 있습니다.

1
2
3
4
    <style name="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
cs

 

 

 

그렇다면, Acitivty는 deprecated된 것일까요? 아닙니다. Activity는 모든 종류의 Activity의 Base입니다. Acitvity의 상속을 받는 관계를 '부모<-자식'으로 표현했을 때 다음과 같습니다.

 

Activity <- FragmentActivity <- AppCompatActivity <- ActionBarActivity

 

 물론 사실 이 Activity 또한 Context라는 super class로부터 시작합니다. 이에 대한 설명은 https://stackoverflow.com/questions/31297246/activity-appcompatactivity-fragmentactivity-and-actionbaractivity-when-to-us 에서 Farhana님의 답글이 명쾌했으므로, 이를 참고 하시면 좋을 것 같습니다. 아래는 해당 부분입니다.

...더보기

If you talk about Activity, AppcompactActivity, ActionBarActivity etc etc..

We need to talk about Base classes which they are extending, First we have to understand the hierarchy of super classes.

All the things are started from Context which is super class for all these classes.

Context is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc

Context is followed by or extended by ContextWrapper

The ContextWrapper is a class which extend Context class that simply delegates all of its calls to another Context. Can be subclassed to modify behavior without changing the original Context.

Now we Reach to Activity

The Activity is a class which extends ContextThemeWrapper that is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you

Below Classes are restricted to extend but they are extended by their descender internally and provide support for specific Api

The SupportActivity is a class which extends Activity that is a Base class for composing together compatibility functionality

The BaseFragmentActivityApi14 is a class which extends SupportActivity that is a Base class It is restricted class but it is extend by BaseFragmentActivityApi16 to support the functionality of V14

The BaseFragmentActivityApi16 is a class which extends BaseFragmentActivityApi14 that is a Base class for {@code FragmentActivity} to be able to use v16 APIs. But it is also restricted class but it is extend by FragmentActivity to support the functionality of V16.

now FragmentActivty

The FragmentActivity is a class which extends BaseFragmentActivityApi16 and that wants to use the support-based Fragment and Loader APIs.

When using this class as opposed to new platform's built-in fragment and loader support, you must use the getSupportFragmentManager() and getSupportLoaderManager() methods respectively to access those features.

ActionBarActivity is part of the Support Library. Support libraries are used to deliver newer features on older platforms. For example the ActionBar was introduced in API 11 and is part of the Activity by default (depending on the theme actually). In contrast there is no ActionBar on the older platforms. So the support library adds a child class of Activity (ActionBarActivity) that provides the ActionBar's functionality and ui

In 2015 ActionBarActivity is deprecated in revision 22.1.0 of the Support Library. AppCompatActivity should be used instead.

The AppcompactActivity is a class which extends FragmentActivity that is Base class for activities that use the support library action bar features.

 

 

 

Reference

 

Activity, AppCompatActivity, FragmentActivity, and ActionBarActivity: When to Use Which?

I'm coming from iOS where it's easy and you simply use a UIViewController. However, in Android things seem much more complicated, with certain UIComponents for specific API Levels. I'm reading

stackoverflow.com

 

일반 Activity와 AppCompatActivity의 차이가 무엇인가요?

안드로이드에 일반 Activity가 있고, AppCompatActivity가 있던데 그 둘의 차이가 무엇인가요?이거 외에도 AppCompat이 붙은 것이 몇가지 더 있는것 같던데, 차이가 뭔지 모르겠네요.

hashcode.co.kr

 

With API 28 and "androidx.appcompat" library project says "AppCompatActivity" symbol not found

I updated my build and target version to 28 (Pie) and replaced the relevant dependencies. Now my project says Symbol not found on AppCompatActivity. I have tried to Clean project Rebuild project

stackoverflow.com

 

Image Refernece

 

Here’s the first developer preview of Android P – TechCrunch

Just like in the last two years, Google is using the beginning of March to launch the first developer preview of the next version of Android. Android P, as it’s currently called, is still very much a work in progress and Google isn’t releasing it into its

social.techcrunch.com

 

728x90
728x90

 

안녕하세요. 어째 첫번째 모바일 게임 리뷰가 보스레이브라니... (BOSS + SLAVE의 합성어라는 듯)

 

 

이런 가챠만 자극하는 돈벌이 게임!!!! 사실 별로 즐기지도 추천하지도 않습니다만 ㅠㅠㅠㅠ

플레이한 단 한가지 이유모델이 제가 좋아하는 청하 언니(이쁘면 다 언니랬어 미안해 청하야)라...

 

누가 모델을 뽑았는지 배우신 분이라 생각하며,

게임 한번 시작했으니 전직까지는 해보자;;하는 심정으로 직접 플레이해봤습니다.

 

게임시작 화면

 

1. 왜 타이틀이 보스레이브인가

CF 보고 가시죠. 제목이 왜 '보스레이브'인지 알 수 있습니다.

 

 

보스레이브 청하 CF..인데... 팬심으로 멋짐과 오글거림의 생사를 오가는 경계

 

청하의 Snapping 이미지가 게임스럽다는 분위기긴 했지만, 정말 게임 모델을 해버리네요.

아무튼 나름 CF는 게임이 추구하는 포인트를 잘 살리고, 모델이랑 어울리게 만든 것 같습니다.

정작 게임을 했더니 CF에서 포인트가 되는 부분은 "아 그런가? 그런 의민가?"하고 전혀 안 느껴졌단게 함정이지만요;; (어쩔 수 없지 가챠게임은)

 

 

 

2. 청하가 얼마나 나오는가

전 청하만 보고 시작했는지라, 청하 이스터 에그가 얼마나 있는지가 중요했습니다. 본격 사심 리뷰 

1) 튜토리얼마다 청하 사진+ 청하 목소리로 직접 설명이 이뤄졌고,

2) '여신 호위'라는 미션으로 무려 청하를 호위하는 퀘스트를 진행할 수 있네요. 

 

 

청하느님이 여신이긴하지

 

 

 

3. 게임에 대하여

중국 개발사 ‘THINK FLY’에서 만들었다고 하네요. 즉, 중국산 판타지 무협 MMORPG입니다.

어쨌든 게임 리뷰니... 게임 자체의 간단히 설명을 하자면, 아래와 같이 총 3가지 직업군이 있습니다. 

 

 

 

초반 스토리는 위기에 처한 사형들과 사부를 구하는... 뭐 그런건데 약간 블레이드앤소울이 생각납니다. 

 

화중사형..? 내 화중 사형은 이렇지 않아!! ㅠㅠㅠ
나 찾니 막내야?

 

 

전 여자니까, 그리고 플레이어분들 중 대다수가 여캐라서 할 거 같으니까 마법사를 했습니다. (사실 대충 골랐음)

어차피 자동전투 모드만 하다보니, 마법사인데 원거리로 안 싸우고 캐릭터가 보스몹한테 달라붙어서 게임을 하네요...

근접캐가 나을법한 느낌입니다.

 

 

이렇게 보스를 선택해서 사냥을 하는 것도 있고, 메인스토리를 따라 전투를 하는 것도 있습니다.

 

인연? 결혼 시스템도 있던데.. 제가 하루도 안되어서 레벨 140 전직 찍고, 160까지 올렸으니

상대만 잘 있으시면 금방 가능합니다. 연회도 열더라구요. 아무래도 거의 200까지는 튜토리얼 같습니다. 

 

 

 

저는 이런류의 모바일 게임을 좋아하지 않아서 오래 못 할 것 같습니다만,

자동전투로 일 하면서 켜놓고 라이트하게 즐기시는 걸 좋아하시는 분들은 새로 하실 법 하네요. 

 

728x90
728x90
  • 버그 리포트 메일로 안드로이드 에러가 전송되어서, 무슨 일인가 하고 확인해보았다.

1. Error

Fatal Exception: java.lang.IllegalArgumentException
reportSizeConfigurations: ActivityRecord not found for: Token{a8646d4 null}
android.os.Parcel.createException + 1970 (Parcel.java:1970)
com.android.internal.os.ZygoteInit.main + 1445 (ZygoteInit.java:1445)

 

Caused by android.os.RemoteException
Remote stack trace: at com.android.server.am.ActivityManagerService.reportSizeConfigurations(ActivityManagerService.java:10468) at android.app.IActivityManager$Stub.onTransact$reportSizeConfigurations$(IActivityManager.java:12548) at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2385) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:4162) at android.os.Binder.execTransact(Binder.java:739)

 

 

2.원인

Performance issue: "too much work on its main thread"

 

 

 

 

Reference

728x90
728x90

 

1. 서론

저... 잠시 자기 반성의 시간 좀 가져도 될까요?

  • Github에서 md파일들을 보면서도 매번 무시했습니다. 개발자라고 녹을 받는 주제에 정작 새로운 걸 배우고자 하는 마음 대신에 게을렀습니다.
  • 다들 "마크다운, 마크다운!" 하는데 왜 하는 지 관심도 안 가졌습니다. 그저 블로그를 다시 시작하고 싶단 마음에 풍월을 기억하고 있어보인다며 시작했습니다. ㅠㅠ 반성, 반성.

정작 시작했더니 이거 정말, 중독성 있네요.

내 안에 잠들어 있던 글쓰기 본능 다시 일어나라!

 

 

 


 

2. Markdown, 그래? 마크다운이 대체 뭔데?

  • 마크다운(markdown)은 일반 텍스트 문서의 양식을 편집하는 문법이다. README 파일이나 온라인 문서, 혹은 일반 텍스트 편집기로 문서 양식을 편집할 때 쓰인다. 마크다운을 이용해 작성된 문서는 쉽게 HTML 등 다른 문서형태로 변환이 가능하다.
    마크다운 by wikipedia
  • 마크다운 (Markdown)은 마크업 언어의 일종으로, 존 그루버(John Gruber)와 아론 스워츠(Aaron Swartz)가 만들었다. 온갖 태그로 범벅된 HTML 문서 등과 달리, 읽기도 쓰기도 쉬운 문서 양식을 지향한다. 그루버는 마크다운으로 작성한 문서를 HTML로 변환하는 펄 스크립트도 만들었다. 확장자는 .md 또는 .markdown을 쓰지만, 전자가 압도적으로 많이 쓰인다.
    마크다운 by 나무위키

 

HTML보다 더 간단하고 쉬우며, 워드보다 인터넷에 발행하기에 적합하다는 마크다운

전 드디어 며칠 전부터 티스토리로 시작하여, 지금도 마크다운으로 작성하고 있습니다. 심플하면서 재밌습니다.
그런데, 블로그 글에 끄적끄적 올리는 라이트한 정보글 뿐만이 아니라 앞으로 제가 쓸 소설이나 에세이들도 다 마크다운 문서로 보관하고 싶다는 충동이 일었습니다.


  1) 게다가 만약 티스토리든 어디든 내가 중요시하는 서비스 플랫폼이 망한다던가해서 옮길 때 곤란하고, 

  2) 온라인/오프라인에서 모두 동일한 양식을 가지는 문서를 가지고 싶다면?

어찌보면 너무나 당연한 욕구겠죠.

 

 

 


 

3. 윈도우에게도 좋은걸 달라!!!

처음엔 "난 개발자니까 sublime text로 하면 되는거 아냐?" 라고 생각했습니다.

 

물론 sublie text도 편집이 가능 합니다. 미리보기도 어떻게 적용하면 된더라구요. 근데 설정이 귀찮아요...
게다가 따로 다른 코드들도 이걸로 봐야하는데, 글쓰기용으로 분할 안되면 귀찮을 것 같다는 생각이 물씬 들었습니다.

대충 구글링해보니 뭔가 수두룩 합니다. 아득해지네요.
예쁜건 맥이 더 많아보이는데, 저같은 윈도우 사용자는 뭘 써야할까요.
그 속에서 반복적으로 나오는 에디터들이 분명 있는데, 과연 대중적으로 선호하는건 무엇인가?

 

마침 slant라는 사이트에서 윈도우에 최고의 마크다운 에디터는 무엇인지 투표를 했더군요.

 


https://www.slant.co/topics/1852/~best-markdown-editors-for-windows

 

(어라라 visual studio code가 있네요. Youtube에서 강의 볼 때 어떤 분이 쓰시던 에디터가 이거 같은데.
마크다운용이 아니더라도 나중에 이것도 한번 봐야겠습니다.)

 

일단 Typora가 가장 높으니 이걸 봐야죠.

 

 

 


4. Typora - 마크다운 편집기

 

설치하기

https://www.typora.io/ 로 들어가시면 Typora의 심플하지만 예쁜 메인을 보실 수 있습니다.

음..? 뭐가 없네? 싶었는데, 반응형이라 스크롤을 좀 내리면 메뉴가 나오네요.

Download를 클릭하면 아래처럼 나옵니다. 설치는 무척 간편합니다.

 

 

 

사용하기

(1) 소스코드 화면

 

(2) 미리보기 화면

ctrol + / 를 이용하면 간단하게 소스코드 화면과 미리보기를 오갈 수 있습니다.

 

 

 


5. 결론

심플하고 꽤나 만족스럽습니다. 이걸 써보니 티스토리 마크다운 편집이 아직 부족한 점이 많다는걸 느끼네요.
제가 문법을 잘못 한건지 잘 안되는 것도 좀 있고...
잘 하시는 분들이 github에 jekyll로 블로그 하는 이유를 간접적으로 체감중.

728x90

+ Recent posts