为什么我的BassBoost服务无法在后台运行:(?

时间:2018-02-16 01:33:37

标签: android service

我正在努力让BassBoost班级在后台工作。当应用程序在我眼前时,它可以工作,但是当我按下后退按钮时,它不再是低音增强。

这是我的代码 -

BassBoost bb;
...
 bb = new BassBoost(0, 0);
 bb.setEnabled(true);
bb.setStrength((short) 1000);

我也尝试将其转移到服务中:

public class ServiceName extends Service {
public static BassBoost bb;

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(getBaseContext(), "service started dawg", Toast.LENGTH_LONG).show();
    bb = new BassBoost(0, 0);
    bb.setEnabled(true);
    bb.setStrength((short) 1000);
}

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

我甚至尝试过使用我的服务:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;    
}

1 个答案:

答案 0 :(得分:0)

这是例如,我想你有MainActivity.java文件放在onCreate方法的代码下面,最后。

Intent intent = new Intent(this, watchman.class);
startService(intent);
Log.d(TAG, "Starting Service...\n");

这里watchman.class意味着您需要创建watchman.java文件。 它应至少具有以下基本代码

public class watchman extends Service
{

    @Override
    public IBinder onBind(Intent arg0)
    {
         return null;
    }

    public int onStartCommand(Intent intent, int flags, int startId)
    {


          new Thread(new Runnable()
          {
               public void run()
               {
                    while(true)
                    {
                        Log.d(TAG, "Thread Running...");

                        // code in service goes here..


                        Thread.sleep(10000);

                    }

               }


         }).start();

    return START_STICKY;

   }

   @Override
   public void onDestroy()
   {
        super.onDestroy();
        Log.d(TAG, "Service Destroyed...");

   }



}

在manifest.xml文件中,在标记

之前放入以下代码
<service android:name=".watchman"></service>
</application>

现在自动包含必要的导入文件,并在模拟器上运行项目,保持logcat打开..你应该看到&#34;线程运行&#34;多次打印,实际上是无限循环。它旨在将您的代码保留在这里......,即使您的应用程序关闭,它也会继续运行。

问我是否需要更多帮助。希望你或任何人发现它有用