从活动中启动服务

时间:2010-02-25 15:02:52

标签: android

在我的应用程序中,我有一项活动,我想从哪个服务开始服务可以帮助我吗?

7 个答案:

答案 0 :(得分:52)

在您的代码中添加此内容

Intent serviceIntent = new Intent(this, ServiceName.class);
    startService(serviceIntent);

别忘了在AndroidManifest.xml文件中添加服务标签

<service android:name="com.example.ServiceName"></service>

来自Android official documentation

  

警告:服务在与应用程序相同的进程中运行   声明它,并在该应用程序的主线程中,通过   默认。因此,如果您的服务执行密集或阻止操作   当用户与同一应用程序中的活动进行交互时,   该服务将降低活动性能。为了避免影响   应用程序性能,你应该在里面启动一个新的线程   服务。

答案 1 :(得分:39)

应用程序可以借助Context。startService方法启动服务。如果尚未创建服务,该方法将调用服务的onCreate方法;否则将调用onStart方法。这是代码:

Intent serviceIntent = new Intent();
serviceIntent.setAction("com.testApp.service.MY_SERVICE");
startService(serviceIntent);

答案 2 :(得分:1)

API Demos有一些启动服务的例子。

答案 3 :(得分:1)

使用Context.startService()方法。

阅读this

答案 4 :(得分:1)

首先从android Manifest.xml文件创建服务(即从应用程序选项卡)并给它一些名称     关于某些事件的活动,如点击或触摸,以包含服务中的代码:

public void onClick(View v)
{
    startService(new Intent(getApplicationContext(),Servicename.class));
}

如果要停止正在运行或已启动的服务,请包含以下代码:

public void onclick(View v)
{
    stopService(new Intent(getApplicationContext,Servicename.class));
}

答案 5 :(得分:0)

如果您想启动服务并且应该在后台运行,请在相应的服务中使用START_STICKY。

您也可以在启动时启动服务,

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

创建接收器,

<receiver android:name=".auth.NotificationBroadcast" android:enabled="true" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

在Brodcast Receiver中添加,

@Override
    public void onReceive(Context context, Intent intent) {

        System.out.println("BroadcastReceiverBroadcast--------------------ReceiverBroadcastReceiverBroadcastReceiver----------------BroadcastReceiver");

        if (intent != null) {
            String action = intent.getAction();

        switch (action) {
            case Intent.ACTION_BOOT_COMPLETED:
                System.out.println("Called on REBOOT");
                // start a new service 
               startService(new Intent(getApplicationContext(),Servicename.class));

                break;
            default:
                break;
        }
    }
}

您的服务就像,

答案 6 :(得分:0)

在科特林,您可以按照以下步骤从活动开始服务:

   startService!!.setOnClickListener { startService() }

   private fun startService(){
    startService(Intent(this, HitroService::class.java))
   }