从非活动类绑定到窗口小部件服务

时间:2013-08-22 12:20:00

标签: java android eclipse service binding

我的Android应用程序有一个小部件。

这是小部件服务OnCreate

public class AppWidgetService extends Service {


    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

private static AppWidgetService mInstance = null;

..
}

此服务基本上会扫描从应用程序中填充的文件。

每当应用更改此文件内容时,我都想调用服务的re-scan(也就是刷新)方法。

我曾想过要创建一个新类(非Activity)widgetServiceBinder

将公开静态公共有界服务成员。

我有一些问题:

1)当应用程序运行时,我不知道该小部件是否在用户主页中处于活动状态。

因此我不知道该服务是否正在运行。

如果它没有运行我不想创建它,因为它没有任何需要,只要用户

未将其添加到主屏幕。

可能是小部件存在但是当我绑定它时,我调用了一个未创建的服务

通过致电OnCreate

2)我问,因为我尝试过像this这样的活动。我设法在服务中调试

方法,但似乎它的所有成员都是null。我无法初始化mInstance

3)为了简单起见,我尝试从Activity中绑定。我其实想要创建一个

新课程(非活动)widgetServiceBinder。我怎样才能从那里绑定到服务?

我无法从该经理那里打电话给getApplicationContext

4)我已经从外部将应用程序的上下文发送到服务方法,

然后我必须将其渗透到使用mInstance的所有方法,否则我得到

nullPointer例外。

你会如何建议解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,我只能帮助你在非活动中进行绑定。

有几种方法可以做到,

1:创建一个你在上下文(活动)中传递的构造函数。

2:创建可以通过静态方式使用的singeltone。

最好的方法是在构造函数中传递上下文。