はじめに
つまり、JetPackは長い間登場し、自分のプロジェクトは、関連するものを使用していますが、次の系統的な研究と使用、物事の各部分はありません。最近、私はちょうど物事のいくつかを学ぶための時間を持って、光が口のハンドルを練習していないことを考え、ここに彼らの将来の理解と学習を容易にするために、次のことを記録します。
まずは
この記事を書くには、JetPackコンポーネントとは何か、その中に何が含まれているのかを理解することから始めます。
- JetPackコンポーネントとは何ですか?
AndroidのJetpackコンポーネントは、一緒に動作するように構築されたライブラリのコレクションですが、より生産性を高めるためにKotlin言語の機能を活用しながら、個別に使用することもできます。すべて使うことも、組み合わせて使うこともできます!
- JetPackコンポーネントには何が含まれていますか?
- データバインディング
- Lifecycles
- LiveData
- navigation
- paging
- Room
- viewmodel
- ワークマネジャー
- その他はJetPackコンポーネントのウェブサイトをご覧ください。
次に
上記のJetPack、そして今日の主人公Lifecycleを見てみましょう。
Lifecycle簡単に言えば:ライフサイクルを意識したコンポーネントは、ライフサイクルに対処するために、どのようにこれを理解する?アクティビティ、フラグメントとサービスは、ライフウィークを持っているだろう!
ソフトウェアを書くとき、ライフサイクルを考慮する期間は、誤処理した場合、それは非常に頭痛の種であるバグ、様々なつながる可能性がある。もちろんだ。
オフィシャルもこの問題を認識している。したがって、このライフサイクルを意識したライブラリのライフサイクルの導入は、より簡単にコードのロジックやその他の問題に対処できるようにする。
- 以上のことを踏まえて、どのように機能するか見てみましょう。
1、26.1.0以降、ライフサイクル・インターフェースのデフォルトの実装、ビュー・アクティビティ、ソースコードの断片を見ることができるため、次のようになります。
2、showTimeでは、アクティビティとサービスでのライフサイクルの使い方を紹介しています。
1) LocationListener クラスを作成し、LifecycleObserver インターフェイスを実装します。
class LocationListener : LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) fun onStart() { Log.e("TAG", "onStart") } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun onStop() { Log.e("TAG", "onStop") } }
分析 上記のコードはLifecycleObserverインターフェースを実装するだけでなく、2つのメソッドを作成しています。そして、ライフを意識したアノテーションON_STARTとON_STOPをメソッドに追加しています。実際には、アクティビティのライフサイクルに関連するON_CREATE、ON_RESUME、ON_PAUSE、ON_DESTROY、ON_ANYもあります。
2)、活性結合において
val mLocationListener = LocationListener() lifecycle.addObserver(mLocationListener)
3)、結果は以下のようになります__分析:__ 図に示すように、入力しただけでonStartメソッドが実行され、ホームボタンがクリックされるとonStopメソッドが実行され、ライフサイクルとアクティビティのライフサイクルが一致していることがわかります。
3、アクティビティの実行については、その後、サービスの?それも可能でしょうか?答えはイエスですが、依存ライブラリを追加する必要があります。
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
activtyとfragmentでは必要ないのに、なぜオンライン依存関係を追加するのですか?LifecycleObserverインターフェイスはデフォルトでアクティビティとフラグメントに実装されていますが、Serviceを見ると実装されていないからです。ここで、ではどうやってサービスのライフサイクルを検知するのか?ここで、上で追加した依存関係が登場します。LifecycleServiceというクラスがあり、このクラスはServiceから継承され、Serviceの使い方は同じで、以下のようにLifecycleObserverインターフェイスを実装しています。
1)、まあ、上記の図は、サービスもライフサイクルを感じることができる図示している、その後、具体的な達成する方法を見て
class LocationListener : LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) fun onStart() { Log.e("TAG", "onStart===>Service") } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun onStop() { Log.e("TAG", "onStop===>Service") } }
分析: まだLocationListenerを使用し、ON_STARTとON_STOPアノテーションを追加しました。
2)、サービスコール
class LocationServer : LifecycleService() { private lateinit var mLocationListener: LocationListener override fun onCreate() { super.onCreate() mLocationListener = LocationListener() lifecycle.addObserver(mLocationListener) } }
3)、サービスの開始と停止の呼び出しの活動
private fun start() { val intent = Intent(this, LocationServer::class.java) startService(intent) } private fun stop() { val intent = Intent(this, LocationServer::class.java) stopService(intent) }
4)、結果の分析: あなたは、結果はまた、スタートボタンをクリックするとonStartメソッドが実行され、ストップボタンをクリックするとonStopメソッドが実行されることがわかります。
最後に
ProcessLifecycleOwner
実際には、プログラムのライフサイクル全体に耳を傾けることができ、それを行う方法について考えるがありますか?さて、今日はそれがここにある、修正するために歓迎間違った場所に書かれています。ビューの異なる点がありますが、あなたはああを議論するためにグループ()を入力することができます。