我正在尝试调用服务类来更新我的小部件中的变量值,但它似乎永远不会到达服务类。我已经看了一些例子,我无法弄清楚我做错了什么,而且我对服务还不是很了解。所有帮助表示赞赏。
服务类
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);
答案 0 :(得分:1)
尝试使用PendingIntent
手动启动服务。
更好的方法是不是每次需要做某事时启动服务,而是启动它一次,绑定到它并在需要服务时使用常用方法调用。
对于您的示例,即使是简单的Thread
也更合适。