質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

445閲覧

AndroidStudioが理解できない

SZ-Z0001

総合スコア38

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2019/08/23 06:28

編集2019/08/23 06:51

前提

この質問はAndroidStudio ver 3.4 のテンプレートプロジェクトを元に質問させていただいております。

質問者はAndroidStudio初心者でして今回独学に限界を感じてきたため質問させていただきます。
質問のきっかけとなった勉強箇所については以下項目へ続きます。

発生している問題 試したこと

AndroidStudioを開いた際に表示されるテンプレートを読み解く事から開始しました。
試しにLoginActivity(ログイン画面)のテンプレートを開いたのですが(ver.3.4)MVVM方式でInput箇所のデータの変更イベントを管理している所までは把握しました。

Activity内でViewModelProvidersにてLoginViewModel監視用の変数を定義しobserveしているとゆう印象。

しかし、MVVMが逆にとっつきずらく思えてきます。(この量のコードだからそう思うのかもしれませんが)

質問

1AndroidStudioを利用している方はここまでクラスを大量に制作される事は普通なのでしょうか?(チーム制作されない方に得に聞いてみたいです。)
テンプレートファイルなので勿論プロの見やすいコードなのでしょうが毎回テキストの変更検出処理程度の処理にクラスをいくつも追加する必要が有るとゆうのは逆にすっきりしません。普段はJavascriptやサーバー側処理を担当している為処理はファンクションにまとめて変数は同ファイル内に定義してその場で利用するものでまとめていたので今までの実装方法と大きく違い迷っております。

2.スマホアプリはActivityの管理や同期処理制限の問題が有るのでこういった処理にする必要があるとゆう事でしょうか?

3.テンプレートではログインしたユーザ情報をLoginRepository内で管理しています(変数名user)、仮にログイン処理が終わったら毎回このLoginViewModelのloginRepositoryからユーザ情報を取得するのは困難に思えます。LoginViewModelを管理しているActivityが破棄されるとこのユーザ情報も消えてしまうのでキャッシュに入れるような理解であっておりますでしょうか?(そもそもユーザ情報へのゲッターセッターをわざわざファイル別にするのも真面目すぎる気もしますが・・)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AndroidStudioを利用している方はここまでクラスを大量に制作される事は普通なのでしょうか?(チーム制作されない方に得に聞いてみたいです。)

個人としては普通だと思っています。
チーム制作関係なく、(未来の自分も他人なので) コードの可読性を保つために1つのクラスの責務やサイズは小さくし、組み合わせ可能にする必要があると思います。
(が、それは一般論なので一人での制作ならもちろん自分がやりやすいように好きにやれば良いと思います。

スマホアプリはActivityの管理や同期処理制限の問題が有るのでこういった処理にする必要があるとゆう事でしょうか?

MVVMに関してという意味であれば、特にスマホだからという理由ではないかと思います。
JS での SPA やデスクトップアプリ等 GUI を持つアプリなら広く使われている設計かと思います。

Activityが破棄されるとこのユーザ情報も消えてしまうのでキャッシュに入れるような理解であっておりますでしょうか?

あっていると思います。 Application > Activity > Fragment のようなスコープ管理で各種状態は必要なスコープで管理する必要があります。そのようなDIのライブラリもあるので、調べていただけると良いかもしれません。

(Activity 以下が別れている理由としては、スマホは計算/メモリ等リソースがない前提なので Activity 以下は常に OS 側で破棄できるようにしておく必要がある。

投稿2019/09/01 16:53

編集2019/09/01 16:56
unhappychoice

総合スコア1531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問