私のアプリケーションオブジェクトに問題があります。私は現在電子ゲームボードからの着信データをシミュレートするサービスを使用しています。このデータは、2Dブール値配列として表されます。 5秒ごとに、サービスはアプリケーションオブジェクトのメソッドを使用して配列を更新します(setDetectionMap())。この配列は、別のメソッド(getDetectionMap())を使用してメインアクティビティのスレッドによって読み込まれています。いくつかのデバッグの後で、主なアクティビティが変更を見ていないことはほぼ肯定的です。ここに私のアプリケーションオブジェクトのためのコードされていますアプリケーションオブジェクトが共有されない
public class ChessApplication extends Application{
private static ChessApplication singleton;
private boolean[][] detectionMap;
public static ChessApplication getInstance(){
return singleton;
}
@Override
public void onCreate() {
super.onCreate();
singleton=this;
detectionMap=new boolean[8][8];
}
public boolean[][] getDetectionMap(){
return detectionMap;
}
public void setDetectionMap(boolean[][] newMap){
detectionMap=newMap;
Log.d("Chess Application","Board Changed");
}
}
私は私のマニフェストをチェックしましたが、私は12回を私のオブジェクトの宣言を書き換えてきた、私はときに私のコードが実行されていることを確認するために、LogCatタグを追加しましたそれがすべきだと思うし、私はおそらく冗長なシングルトンコードを実装しています。これを引き起こす可能性のあるアイデアは何ですか?ちなみに、誰も私のアクティビティの実行中に変数の状態を表示する方法を教えてもらえますか?前もって感謝します。
返信ありがとうございます。だから、私は実際には、私のサービスでハードコーディングしている特定の値を返すまで.getDetectionMap()を待つwhileループを使用して、私の活動の更新をポーリングしていますが、それは書き込みが行われたことを決して確認しません。しかし、このwhileループを入力する前に、メインアクティビティで.setDetectionMap()を使用して値を設定すると、正常に動作します。だから、私のアプリケーションオブジェクトがシングルトンとして動作しているのではなく、私のアクティビティとサービスが両方ともオブジェクトの異なるインスタンスを実行しているように見えます。ありがとう。 – user1373705
2つの異なるアプリケーションオブジェクトを実行している場合、私は驚くでしょう。ただし、予防策として、detectMapを静的に設定することもできます。問題が解決しない場合は、2つの異なるアプリケーションインスタンスであることがわかります。 –
detectMapを静的に設定しようとしましたが、問題は解決しません。 LogCatタグを使用して、サービスとアクティビティが予想された時間に読み取り/書き込みを行っていることと、アプリケーションオブジェクトがこれらの呼び出しに応答していることを確認していますが、まだ2つは完全に認識していないようです。 – user1373705