java - 如何在 Android 中使用切换按钮停止后台服务?

标签 java android

我正在后台运行服务,服务将停止并开始单击切换按钮。服务在第一个 Activity 中启动,并在单击切换按钮时在另一个 Activity 中停止服务。当我运行应用程序服务时在第一个 Activity 中自动启动,我在第一个 Activity 的 onCreate() 方法中启动,另一个 Activity 切换按钮状态已经处于状态但是当我切换按钮将关闭服务停止但是当我回到第一个 Activity 服务再次启动。请任何人都可以帮助我。这是我的代码

public class MyService extends Service
{
    private static final String TAG = "MyService";
    MediaPlayer player;
    private final String StrMyService="myservice";



    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");

        player = MediaPlayer.create(this, R.raw.braincandy);
        player.setLooping(false); // Set looping
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        player.start();
    }
}




public class Service_Demo extends Activity implements OnClickListener 
{
      private static final String TAG = "ServicesDemo";


      @Override
      public void onCreate(Bundle savedInstanceState)
      {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        System.out.println("In OnCreate(");
        startService(new Intent(this, MyService.class));


      }
}


public class Toggle_Activity extends Activity
{
    ToggleButton tgButton;
    private boolean isService=false;
    private String strService;
    public final String service_Prefs="servicePrefs";
    private static final String StrMyService = "zdf";


    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.toggle);

        final SharedPreferences servicePrefs=this.getSharedPreferences("Service_Prefs",MODE_WORLD_READABLE);
        strService=servicePrefs.getString(StrMyService , "myservice");
        Log.e("",""+strService);

        final boolean mBool = servicePrefs.getBoolean("myservice", true);
        Log.e("Boolean Value mBool","="+mBool);
        Boolean b = mBool;
        Log.e("Update pref", b.toString());

        tgButton = (ToggleButton)findViewById(R.id.toggleButton);
        tgButton.setChecked(mBool);




        final boolean mBool1 = servicePrefs.getBoolean("myservice", false);
            final Boolean c = mBool1;
        Log.e("Update pref", c.toString());


        tgButton=(ToggleButton)findViewById(R.id.toggleButton);
        tgButton.setOnClickListener(new OnClickListener()

      {

            @Override
            public void onClick(View v) 
                  {
                // TODO Auto-generated method stub

                if(tgButton.isChecked())
                {
                    startService(new Intent(Toggle_Activity.this , MyService.class));
                    System.out.println("Service is started in togglr button");

                }
                else
                {   

                    stopService(new Intent(Toggle_Activity.this,MyService.class));
                    System.out.println("Service is stopped in togglr button");

                }
            }
        });


    }

}

最佳答案

在第一个 Activity 中,您将 startService(new Intent(this, MyService.class)) 放在 onresume 中 来自oncreate

关于java - 如何在 Android 中使用切换按钮停止后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536810/

相关文章:

android - 通知立即取消

android - 在 android 中将数据传递给 json 时单引号不起作用

java - Controller 方法不是使用 IP 而是使用 localhost 调用

快速生产者的 Java "Tiered Queue"实现,慢速消费者

java - 基本多线程程序

android - 有没有办法让 react-native 忽略一些不 bundle 它们的文件?

android - 多个dex文件定义Landroid/support/v13/app

android - 我如何在android上实现 "boundary feedback"?

java - 创建一个匿名类,传入构造函数参数并实现其接口(interface)

java - 调用多个构造函数 - 只调用同一个构造函数?