Начать Сервис с деятельности - PullRequest
22 голосов
/ 25 февраля 2010

В моем приложении есть действие, с которого я хочу запустить службу. Может ли какой-нибудь орган помочь мне?

Ответы [ 6 ]

52 голосов
/ 13 сентября 2012

Добавьте это в свой код

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

Не забудьте добавить метку службы в файл AndroidManifest.xml

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

Из официальной документации Android :

Внимание : служба работает в том же процессе, что и приложение в который объявлен и в основной теме этого приложения, дефолт. Итак, если ваш сервис выполняет интенсивные или блокирующие операции в то время как пользователь взаимодействует с деятельностью из того же приложения, служба будет замедлять производительность деятельности. Чтобы избежать воздействия производительность приложения, вы должны начать новый поток внутри сервис.

39 голосов
/ 25 февраля 2010

Приложение может запустить службу с помощью метода Context .startService. Метод вызовет метод onCreate службы, если служба еще не создана; иначе будет вызван метод onStart. Вот код:

Intent serviceIntent = new Intent();
serviceIntent.setAction("com.testApp.service.MY_SERVICE");
startService(serviceIntent);
1 голос
/ 05 января 2013

Сначала создайте сервис из файла 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));
}
1 голос
/ 25 февраля 2010

Используйте метод Context.startService ().

И читать это .

1 голос
/ 25 февраля 2010

Демоверсии API содержат несколько примеров запуска служб.

0 голосов
/ 20 сентября 2016

Если вы хотите запустить службу, и она должна работать в фоновом режиме, используйте 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 add,

@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;
        }
    }
}

А твой сервис как,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...