我从我的活动开始提供服务然后调用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!!!!
}
答案 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">