在哪里调用stopService()以确保服务停止?

时间:2011-04-28 09:24:24

标签: android service

我知道很多关于如何停止服务的问题之前已被问过,但我没有找到解决我特定问题的问题。

在我的应用程序中,我有许多与一个中央服务通信的活动。对于每个活动,我在其onResume()方法中调用bindService(),在其onPause()方法中调用unbindService()。 我遇到的问题是,每次在两个活动之间切换时,服务都会被销毁,然后从头开始重新创建。

为了解决这个问题,我考虑在onCreate()中调用startService(),以确保服务保持活动状态。

我的问题是,我应该在哪里放置stopService() - 方法以确保在离开应用程序时调用它? 或者,是否存在另一种方法来保持服​​务运行,因为我在两个活动之间切换,而不依赖于startService()?

2 个答案:

答案 0 :(得分:2)

请参阅android service startService() and bindService()以获得全面的答案。

答案 1 :(得分:1)

这就是我停止和启动服务的方式 查看此link了解详情。

public void onClick(View src) {
    switch (src.getId()) {
        case R.id.buttonStart:
            Log.d(TAG, "onClick: starting srvice");
            startService(new Intent(this, MyService.class));
            break;
        case R.id.buttonStop:
            Log.d(TAG, "onClick: stopping srvice");
            stopService(new Intent(this, MyService.class));
            break;
    }
}

并在服务类中:

public class MyService extends Service {
    private static final String TAG = "MyService";


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

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


    }

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

    }

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

    }
}

快乐的编码!