Android服务和套餐

时间:2012-03-01 13:26:30

标签: android

我从我的活动开始提供服务然后调用finish()。问题是在包中创建的其他类在服务的onStart中为null,而在onStart中创建的类是在我开始新活动时。

如何解决这个问题?

谢谢, 内厄姆

以下是示例代码:

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!!!!
}

1 个答案:

答案 0 :(得分: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">