2012-03-01 41 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 2012-03-01 14:17:04

+0

謝謝,我添加了一些樣品 – nmnir 2012-03-03 04:57:13

回答

0

如果你想在所有的活動和應用的服務訪問持久性變量,您可以擴展應用類和訪問它任何你有上下文的地方。例如:

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 2012-03-03 05:10:12