Android 如何在服务中设置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(

大家好,我有一个活动,在这个活动中我运行服务a,在服务a中运行服务B

活动>服务A>服务B

服务B有一个名为“MyMethod()”的方法。我想在服务B中设置未选中的切换按钮。 我尝试在服务B中使用GetSharedReference,但不知道如何更新活动中togglebutton的状态:这是我的活动:

 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所建议的。第二个让你可以更好地控制应用程序的内部通信。