Android 如何在服务中设置togglebutton?
大家好,我有一个活动,在这个活动中我运行服务a,在服务a中运行服务B 活动>服务A>服务B 服务B有一个名为“MyMethod()”的方法。我想在服务B中设置未选中的切换按钮。 我尝试在服务B中使用GetSharedReference,但不知道如何更新活动中togglebutton的状态:这是我的活动:Android 如何在服务中设置togglebutton?,android,android-service,Android,Android Service,大家好,我有一个活动,在这个活动中我运行服务a,在服务a中运行服务B 活动>服务A>服务B 服务B有一个名为“MyMethod()”的方法。我想在服务B中设置未选中的切换按钮。 我尝试在服务B中使用GetSharedReference,但不知道如何更新活动中togglebutton的状态:这是我的活动: final ToggleButton btn = (ToggleButton) findViewById(R.id.toggleButton3); btn.setChecked(
final ToggleButton btn = (ToggleButton) findViewById(R.id.toggleButton3);
btn.setChecked(
getSharedPreferences("btn", MODE_PRIVATE)
.getBoolean("state", false)
);
alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//for RunAsyncTask
final Intent intentAsyncTask = new Intent(DettagliVolo.this, RunAsyncTask.class);
pIntentAsyncTask = PendingIntent.getService(DettagliVolo.this, 0, intentAsyncTask, 0);
btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
alarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 10 * 1000, pIntentAsyncTask);
} else {
alarm.cancel(pIntentAsyncTask);
stopService(intentAsyncTask);
}
getSharedPreferences("btn", MODE_PRIVATE)
.edit().putBoolean("state", isChecked)
.commit();
}
});
对不起,我的英语不好
在服务B中:
@Override
public int onStartCommand(Intent intent, int flags, int idArranque) {
if(a) i want set togglebutton FALSE;
提前谢谢你 您何时看到切换按钮的更改?关于活动的启动,对吗 在
服务
B中获取共享参考
,并更新状态
:
SharedPreferences prefs = context.getSharedPreferences("btn", MODE_PRIVATE);
SharedPreferencesEditor editor = prefs.edit();
editor.putBoolean("state", false).commit();
现在,在启动活动时,根据SharedReferences
的值设置切换按钮
您可以将您的活动添加为SharedReferencesListener(),尽管它主要用于xml首选项,但它会有所帮助。有关代码示例,请参阅
使用定义的广播接收器将意图从服务发送到活动。或者将Messenger置于活动的意图,以提供额外服务。此messenger应绑定到活动中的处理程序。例如,或
简单而快速的解决方案是什么?第一个更简单,一分钟就能实现——正如@Olayinka所建议的。第二个让你可以更好地控制应用程序的内部通信。