2016-12-28 12 views
-7

私はAndroid用のアプリを作成中です。私はAndroid Studioを使用しています。しかし、このアプリは非常に多くのアクティビティ(クラス)と対応するレイアウトファイルを持っています。私のアプリケーションを更新すると、これらのクラスとレイアウトファイルはさらに成長するでしょう。 Android Studioのアクティビティやレイアウトには制限がないことはわかっていますが、アプリが成長し、アクティビティやレイアウトが増えるにつれて、アプリが時間外にクラッシュすることが心配です。私のアプリは車の音です。ユーザは、製造業者を選択し、次いで、製造業者のモデルを選択し、次いで、その特定のモデルに彼/彼女を連れて行き、その自動車の車音を鳴らすことができる。私のAndroidアプリがクラッシュするのですか?

Java class

そして、ここに私のレイアウトファイル(XMLレイアウト)は次のとおりです:ここ

は私のJavaクラスの画像(活動)である

enter image description here

私はとても心配です私のアプリは最終的にクラッシュするだろう、いくつかの時間といくつかの更新後に私は約30から40のクラスとレイアウトを追加するつもりです。

誰かが私の方法の代替案を提案できれば、それはまた分かります!

+0

はエラーログを共有します。 –

+0

@IntelliJAmiya - 私が言ったように、私は時間がたつにつれて私のアプリがクラッシュすることを心配しています。今は完全に正常に動作していますが、私の将来のアップデートでは、さらに多くの車のサウンド(クラスとレイアウト)を追加しています。後でアプリケーションをクラッシュさせて時間を節約できる場合は、代わりの方法が必要です。 – MarkPrescher

+0

多くのアクティビティやレイアウトファイルを持つだけでアプリがクラッシュすることはありません。コードが貧弱に設計されており、徹底的にテストされていないと、アプリケーションがクラッシュする – 0xDEADC0DE

答えて

0

気にする必要はありません。クラスやレイアウトを追加するほど、最終的なAPKは大きくなります。しかし、一度にアクティブアクティビティ(およびそのレイアウト)のみが作成されるため、メモリ消費ランタイムは同じになります。

0

アプリケーションクラッシュは、クラスまたはレイアウトファイルの数に依存しません。アプリケーションでメモリリークがないか確認してください。

アプリケーションのクラッシュを避けるには、コード内のどこにでもtry/catchブロックを配置します。実行時にエラーが発生しても、アプリケーションはクラッシュしません。たとえば、

try { 

//your code 

} catch (Exception e){ 
Log.e("Error",""+e.toString()); 
} 

希望は少し助けてください!

+0

ありがとう! – MarkPrescher

+0

あなたがクラッシュしていないアプリについては正しいですが、これはアプリの品質がかなり低いという事実を隠すだけです – 0xDEADC0DE

+0

@ 0xDEADC0DE非常に合意しました!しかし、アプリのクラッシュよりも優れています。そして、あなたはいつもバグ修正でアプリを更新することができます。 –

1

アクティブなアクティビティだけがリソースを消費するため、多くのアクティビティを持つだけでアプリがクラッシュすることはありませんが、本当に巨大になる場合は、アプローチを変更することを検討する必要があります。多数のアクティビティを持つ場合は、静的ビューを作成しているかもしれません(初心者の場合など)。そうしていると、レイアウトを作成し、レイアウト内のデータを動的に読み込むことを検討する必要があります。これにより、活動の数が減少します。

+0

私はAndroid開発の初心者です。だから私はどのような代替方法を使用できますか? Googleで何を見るべきですか、チュートリアルのリンクを提供することはできますか?ありがとう – MarkPrescher

+0

あなたが使用できるアプローチの1つは、サーバーを使用して、サーバー側でデータベースにコンテンツを追加することです。あなたのアンドロイドアプリでは、サーバーからデータを取得し、作成したレイアウトでそのデータを読み込むことができます。この方法を使用すると、表示したくないデータのすべてに対して新しいアクティビティを作成する必要はありません。しかし、そうするためにはサーバーサイドのことも学ばなければなりません。 – DarkShadow

+0

うん。私はサーバー関連のものを読み上げる必要がありますが、ありがとう! – MarkPrescher

1

複雑であるため、コードをクラッシュしないでください。ただし、クラスの数が増えるにつれて徐々に管理できなくなる可能性があります。

あなたの実際のコードを見ないと、どのようにリファクタリングして簡単化するべきかを判断するのが難しいですが、enumを使用すると便利なツールが見つかるかもしれません。

enum Manufacturer { 
    BMW, 
    AstonMartin, 
    Audi, 
    Jaguar, 
    MercedesBenz, 
    Porsche 
} 

enum Car { 
    AudiRS5_2013(Manufacturer.Audi), 
    AstonMartinV12VantageS_2014(Manufacturer.AstonMartin); 
    private final Manufacturer manufacturer; 

    Car(Manufacturer manufacturer) { 
     this.manufacturer = manufacturer; 
    } 
} 
0

多くのことを心配している場合は、作品をフラグメントに委任することができます。このようにして、アプリケーションの拡張性が向上します。

アクティビティ自体はあまり問題にはなりません。あなたが本当に心配するべきは、メモリリークです。 IntentServices、Coursors、PopupDialogs、およびAsyncTasksを使用している場合は一般的です。

+0

ありがとうございました!私はそれを巨大な考慮に入れます! – MarkPrescher

0

さて、トラブルがお困りでない限り、トラブルは決してありません。あなたのアプリはクラッシュしません。しかし、冗長リソースが多すぎると、サイズ* .apkはますます大きくなります。

関連する問題