0

3 つの質問があります:-

1) OPCUA サーバー用の OPCUA クライアントを作成しています。私のアプリケーションにはいくつかのアクティビティがあり、それらのほとんどは接続されたクライアントを必要とします。接続されたクライアントをすべてのアクティビティで利用できるようにする最善の方法は何ですか? 現在、静的変数を使用してクライアントを保持しています。しかし、他に良い方法はありますか。私のクライアントは Serializable または Parcelable ではないため、インテント引数として渡すことができません。

2) この静的変数をサービスで維持し、MySerivce.connectedClient を使用してすべてのアクティビティで同じ変数にアクセスできますか? それは良いプログラミングの練習になるでしょうか?

3) アプリケーション フォースが終了し、サーバーとの接続が解除されない場合はどうなりますか。アプリケーション フォースが終了した場合でも、サーバーから切断できるようにしたいです。これを確実にする方法はありますか (すべてのコードを try catch ブロックで囲むことを除く) ?

提案してください。

4

2 に答える 2

0

アプリケーション固有のものはすべて Application クラスに保持することをお勧めします。

http://developer.android.com/reference/android/app/Application.html

例えば-

 public class XYZ extends Application {
 .....

 }

アプリ固有の初期化はすべてここでも使用できます。

あなたの要件では、静的初期化がここにうまく適合します。唯一のことは、サービスではなくアプリケーションクラスで実行できることです(これはアンドロイドによって殺される傾向があります)

アプリを強制的に停止すると、プロセス全体が強制終了されます (つまり、Process.killProcess(int pid) を使用)。アプリケーションに関連付けられたすべてのリソースは、カーネルによって削除および解放されます。いいえ、このアクションを傍受する方法はありません。

しかし、常に安全のために

1) OnDestory () でサーバー接続を登録解除する必要があります。

2)さらに安全のために、Applicationクラスで次の関数を使用できます

public void onLowMemory ()
public void onTerminate ()
public void onTrimMemory (int level)
于 2013-01-21T13:37:17.257 に答える
0

私には、これは、クライアントを同時並行のアプリ固有の (プライベート) サービスとして実装する必要があるように思えます。これは Android によってオンデマンドで開始および停止され、すべてのアクティビティはそれにバインドできます。

http://developer.android.com/guide/components/services.html

于 2013-01-21T13:17:05.190 に答える