Android服务不能正常工作

时间:2013-08-13 08:57:22

标签: android android-service

我正在尝试调用服务类来更新我的小部件中的变量值,但它似乎永远不会到达服务类。我已经看了一些例子,我无法弄清楚我做错了什么,而且我对服务还不是很了解。所有帮助表示赞赏。

服务类

public class toggleMonitoringService extends Service{

    @Override
    public IBinder onBind(Intent intent) {

        return null;
    }

    @Override
    public void onCreate()
    {
        Log.d("Me","creating service");
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int startId, int something) {
        // TODO Auto-generated method stub

        String toggle = intent.getExtras().getString("Toggle");
        Log.d("Me","Toggle : " + toggle);
        if (toggle.equals("app1"))
        {
            UpdateWidgetService.monitorApp1 = !UpdateWidgetService.monitorApp1;
        }
        else if (toggle.equals("app2"))
        {
            UpdateWidgetService.monitorApp2 = !UpdateWidgetService.monitorApp2;
        }


        super.onStartCommand(intent, startId, something);
        return 0;
    }



}

我设置意图和待处理意图来处理小部件中的按钮点击

    Intent monitor1toggle = new Intent(this.getApplicationContext(),toggleMonitoringService.class);
    monitor1toggle.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
    monitor1toggle.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,allWidgetIds);
    monitor1toggle.putExtra("Toggle","app1");
    PendingIntent monitor1 = PendingIntent.getService(getApplicationContext(), 0 , monitor1toggle,0);
    remoteViews.setOnClickPendingIntent(R.id.firstappstatus, monitor1);

1 个答案:

答案 0 :(得分:1)

尝试使用PendingIntent手动启动服务。 更好的方法是不是每次需要做某事时启动服务,而是启动它一次,绑定到它并在需要服务时使用常用方法调用。

对于您的示例,即使是简单的Thread也更合适。