2012-03-01 65 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