ビルドがクラッシュした原因を探す方法

ビルドして、エミュレーターはデバック(アプリの表紙)を

映すが、クラッシュする場合。

 

どこでコードが間違えているのかを

チェックする必要がある。

 

例)Fragment

OnCreateViewの次から

valの左隣(一番左端)をクリックする。

すると赤丸が表示される。

 

全てのvar,val,funに赤丸をつけて、虫さんマークをクリック。

 

止まったところがたくさんの文字がでていたら、

そこはクラッシュしていない部分になる。

 

左下に表示されている再生ボタンを押す。

 

クラッシュしていないことを確認して、さらに再生ボタンを押す。

 

それを繰り返す。

 

途中、何も表示されない部分があれば、そこの一つ上の

var,もしくはvalもしくはfunがクラッシュする原因である。

 

クラッシュする原因は「logcat」で見る。

赤く表示してある部分を調べて修正。

 

 

 

メインスレッド⇔バックスレッド 変更方法

メインスレッドでコードを記入しないといけないのに、

バックスレッドでコードを記入している場合がある。

 

そんな時、

「メインスレッド(バックスレッド)じゃなくて

バックスレッド(メインスレッド)で書かないとだめだよ!」

Android Studioさんは叱ってくれる。

 

そんな時には、

GlobalScope.launch(Dispatchers.Main) {
    // 何かしらの処理
}

のコードを使用する。

 

メインスレッドからバックスレッドにする時は上記コードを使う。

 

バックスレッドからメインスレッドにする時は、

GlobalScope.Launch(Dispatchers.IO){…

 

にする。

変化した点は下線部のmain→IOである。

 

ちなみに、基本的にメインスレッドはUIである。

ビルドについて

↑スプラッシュ画面(アプリ起動時に最初に表示されるもの)

 

そのあとにアプリがクラッシュ(アプリが途中で終了すること)が

あれば、原因を探しまくる。

その際に、「Logcat」で赤くなっている部分を

web検索して、エラーを探し出す。

スレッド

アプリの1つのスレッドはコードの上から順番に起動していく。

 

アプリ開発は、同時にスレッドを使っていく。

 

・メインスレッドは1つ目

・バックスレッドは1つ目以外

・マルチスレッドはたくさんのスレッドが扱われていること。

 

アプリの画面がグルグル回っている時に

アプリで何が起こっているかというと、

2つのデータを取ってきている状態であるということ。

 

例)データーベース

viewを見せながら、バックスレッドでデーターベースを拾いに行っている。

 

 

 

 

戻り値

fun(機能)は、戻り値があるものとそうでないものの2種類がある。

*復習*
ブログ記事編集 - はてなブログ (hatena.ne.jp)

 

例)

tonight.value = getTonightFromDatabase()←実行

          }

}

 

private suspend fun getTonightFromDatabase(): SleepNight? {

              ↑

             定義

 

例)内の

fun 〇〇〇(): SleepNight?(SleepNightはクラス)

SleepNight?の部分は戻り値という。

 

戻り値があったら、必ず

「return」

がある。

 

returnは実行に返す(戻る)。

 

例2)

init {

          initializeTonight()←実行(呼び出し)

  }

private fun  initializeTonight() {

                              ↑

         定義

 

戻り値がないので、returnはない。実行されるのみ。

 

例3)

fun 〇〇〇(): SleepNight?

⇒?はnullが入るかもしれないを示す。

 

例4)

fun 〇〇〇(): SleepNight?

⇒下線部はstringやint、bolianなどの型やクラスが入る場合がある。