Android開発初心者にありがちなこと
by
andfactory, inc.
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Android։ൃ ॳ৺ऀʹ͋Γ͕ͪͳ͜ͱ
Slide 2
Slide 2 text
ࣗݾհ • ໊લɿ ࢙࠸ • ॴଐɿגࣜձࣾΞΠϦοδ • ৬छɿAndroidΤϯδχΞ • LIKE : ԻָʢΞΧϖϥʣɺࣸਅ
Slide 3
Slide 3 text
֓ཁ Android։ൃ࢝Ίͨͯͷ࣌ʹ • ࠔ͍ͬͯͨࣄ • ͦͷղܾࡦ Λհ
Slide 4
Slide 4 text
Կͯ͠ͳ͍ͷʹ Ϋϥογϡ͢Δ
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
5ISFBE͕ݪҼɾɾɾʁ
Slide 7
Slide 7 text
ݪҼ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { mTextView.setText("hoge"); } }).start(); } });
Slide 8
Slide 8 text
ݪҼ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { mTextView.setText("hoge"); } }).start(); } });
Slide 9
Slide 9 text
ؾΛ͚ͭΔࣄ • ݪҼɿ • UiThreadҎ֎͔ΒUIʢςΩετͳͲʣΛॻ͖ ͑Δࣄ͕ग़དྷͳ͍ • ରࡦɿ • UIThreadҎ֎͔ΒHandler.post(), ͘͠ runOnUiThread༻͍ͯUIΛૢ࡞͢Δɻ
Slide 10
Slide 10 text
ೖॻͱݱ࣮ͷΪϟοϓ
Slide 11
Slide 11 text
νϡʔτϦΞϧͷґଘϥΠϒϥϦ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.google.android.gms:play-services-maps:15.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }
Slide 12
Slide 12 text
νϡʔτϦΞϧͷίʔυ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); Button button2 = findViewById(R.id.button2); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { button1Clicked(); } });
Slide 13
Slide 13 text
࣮ࡍͷґଘϥΠϒϥϦ dependencies { // App's dependencies, including test compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:design:$rootProject.supportLibraryVersion" compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:support-v4:$rootProject.supportLibraryVersion" compile "com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion" compile "com.google.guava:guava:$rootProject.guavaVersion" compile "android.arch.persistence.room:runtime:$rootProject.roomVersion" annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion" // Dagger dependencies annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion" compile "com.google.dagger:dagger:$rootProject.daggerVersion" compile "com.google.dagger:dagger-android:$rootProject.daggerVersion" compile "com.google.dagger:dagger-android-support:$rootProject.daggerVersion" annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion" // Dependencies for local unit tests testCompile "junit:junit:$rootProject.ext.junitVersion" testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion" // Android Testing Support Library's runner and rules androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion" androidTestCompile "com.android.support.test:rules:$rootProject.ext.rulesVersion" androidTestCompile "android.arch.persistence.room:testing:$rootProject.roomVersion" // Dependencies for Android unit tests androidTestCompile "junit:junit:$rootProject.ext.junitVersion" androidTestCompile "org.mockito:mockito-core:$rootProject.ext.mockitoVersion" androidTestCompile "com.google.dexmaker:dexmaker:$rootProject.ext.dexmakerVersion" androidTestCompile "com.google.dexmaker:dexmaker-mockito:$rootProject.ext.dexmakerVersion"
Slide 14
Slide 14 text
ViewModel…? public class TaskDetailViewModel extends TaskViewModel { @Nullable private TaskDetailNavigator mTaskDetailNavigator; public TaskDetailViewModel(Context context, TasksRepository tasksRepository) { super(context, tasksRepository); } public void setNavigator(TaskDetailNavigator taskDetailNavigator) { mTaskDetailNavigator = taskDetailNavigator; } public void onActivityDestroyed() { // Clear references to avoid potential memory leaks. mTaskDetailNavigator = null; }
Slide 15
Slide 15 text
ֶशͷ༏ઌ 1. ΞʔΩςΫνϟ, databindingͷ͍ํ • MVVM, MVPͳͲɻMVVMͰDatabinding͕؊ͱͳΔͷͰ߹ Θͤͯ 2. ػೳՃʹ΄΅ඞਢͳϥΠϒϥϦ • Retrofit, OkHttpͳͲ 3. Ϟμϯͳઃܭ or هड़͕ՄೳͳϥΠϒϥϦ • RxJava, AAC, dagger2, Kotlin etc…
Slide 16
Slide 16 text
ͳ͔ͥToast͕දࣔ͞Εͳ͍
Slide 17
Slide 17 text
ͳ͔ͥToast͕දࣔ͞Εͳ͍ @Override public void showToast() { Toast.makeText(HogeActivity.this, “Hoge”, Toast.LENGTH_SHORT); }
Slide 18
Slide 18 text
ͳ͔ͥToast͕දࣔ͞Εͳ͍ @Override public void showToast() { Toast.makeText(HogeActivity.this, “Hoge”, Toast.LENGTH_SHORT).show(); }
Slide 19
Slide 19 text
KotlinΛ͏ͱ… // 拡張関数を定義 fun Activity.toast(msg : String) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() } // Activityを継承するクラスでtoast関数を呼ぶことが可能に fun showToast() {
[email protected]
("hoge") }
Slide 20
Slide 20 text
ςετ͕͍͠
Slide 21
Slide 21 text
Context͕औಘͰ͖ͳ͍ʂ Ͱ࣮ػςετͨ͘͠ͳ͍
Slide 22
Slide 22 text
ରࡦ • ϥΠϒϥϦΛ͏ • Robolectric • Android Test ( Android Jetpack ) • ຊʹContextඞཁʁ • ઃܭΛݟ͢
Slide 23
Slide 23 text
Thank you for listening!