2011-06-19 9 views
1

私が活動中で、いくつかの静的オブジェクトを初期化してからfinish()を呼び出した場合、それらのオブジェクトは、まだ他の場所で、アプリケーション内に存在していますか?私は後でサービスにアクセスしたいと言っているように。アクティビティを使用してオブジェクトを初期化し、終了することはできますか?

ない場合、私はいくつかの静的オブジェクトに他のクラスがアクセス権を持っていることを1時間を初期化する可能性のある他のソリューションはありますか?

答えて

2

はい、これが可能です。しかし、静的オブジェクトが存在し続けるには、実行するアプリケーションに少なくとも1つのアクティビティ/サービスが存在する必要があります。私が通常このような変数に対して行うことは、静的メソッドと変数を保持するクラスを作成することです。あなたはこのようなあなたの他のアクティビティ/サービスから呼び出すことができます

public class Utils 
{ 
    public static String s; 
    public static int i; 

    public static initStatics() 
    { 
     s = ""; 
     i = 0; 
    } 
} 

この:このような何かそう

public class CustomService extends Service 
{ 
    @Override 
    public void onStart() 
    { 
     Utils.initStatics(); 
    } 
} 

、これらの変数は、限り、あなたのアプリが実行されているとして利用できるようになります。それが助けられたと願っています。がんばろう!

+0

いいデザイン、分かち合ってくれてありがとう。 – davidcesarino

+0

お返事ありがとう、よかった! – JDS

1

そのような性質のもののためにあなたはApplicationオブジェクトの静的メンバ変数を使用することができます。手動でクリーンアップする必要があります(onDestroyは呼び出されないため)。アプリケーションのプロセスがOSによって破壊されないように、少なくとも1つのアクティビティ/サービスが実行されていることを確認する必要があります。

関連する問題