2012-03-01 10 views
0

私の活動からサービスを開始してから、finish()を呼び出します。問題は、パッケージ内で作成された他のクラスがサービスのonStartでnullであり、onStartで作成されたクラスが新しいアクティビティを開始するときです。Androidサービスとパッケージ

これを解決するにはどうすればよいですか?ここで

おかげで、 ナホム

はサンプルコードです:

class Bridge 
{ 
    static Bridg BridgeInstence; 
    public Bridge() 
    { 
    BridgeInstance = this; 
    } 
} 


class MainActivity 
{  
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    JNIBridge b = new JNIBridge(assetManager); 
    startService(new Intent(this, MainService.class)); 
    finish(); 
} 


public class MainService extends Service 
{ 
     public int onStartCommand(Intent intent, int flags, int startId) { 
     //Bridge.BridgeInstance is NULL here!!!! 
} 
+0

それは問題が何であるか本当のは明らかではありません。いくつかのサンプルコードが役に立ちます。 – jsmith

+0

ありがとう、いくつかのサンプルを追加しました – nmnir

答えて

0

あなたはすべての活動やアプリケーションのサービス間で永続的な変数にアクセスしたい場合は、Applicationクラスを拡張してからアクセスすることができますコンテキストを持っているところならどこでも。私はあなたが同じように、マニフェストでアプリケーションを宣言する必要が信じているこの時点でも

class MyApplication extends Application { 
    Bridge bridgeInstance; 
    onCreate() { 
     bridgeInstance = new Bridge(); 
    } 
} 

class MainActivity {  
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ((MyApplication) getApplication()).bridgeInstance.doStuff(); 
} 

public class MainService extends Service { 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    ((MyApplication) getApplication()).bridgeInstance.doStuff(); 
} 

:たとえば

<application android:name=".MyApplication"> 
+0

素晴らしい!ありがとう... – nmnir