Страница 4 из 4
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 16 сен 2016, 05:29
BiK-14
У меня другая проблема, сервис хоть и убивается, но поток живет и продолжает работать и в методе stop() все таки срабатывает stopSelfResult()=false, поэтому видимо сервис не оживает. Я в onStartCommand возвращаю START_REDELIVER_INTENT.
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 26 сен 2016, 18:36
Kamin
Dimon4ir писал(а):rezak90 писал(а):у меня что то не понятки с манифестом, пишет что не может найти активити в проекте где только сервис. Как должен выглядеть манифест?
таже проблема (Could not identify launch activity: Default Activity not found
Error while Launching activity) в AndroidStudio, класс находится в правильном пакете, какие еще есть решения?
и кто знает как посмотреть запущенные сервисы на genimotion из под AndroidStudio?
В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 03 ноя 2016, 14:17
vkiper
2Kamin:
В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".
Спасибо за подсказку, тоже не мог разобраться, как запустить серис без активити.
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 17 мар 2017, 18:29
Сергей Ситько
Так как документация кривенькая, уроки весьма полезны.
Вопрос автору следующий. Зачем создавали два процесса? В одном всё и так бы отработало, или это заготовка для следующих уроков...
Как ведет себя сервис при rorate screen также ни слова.
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 25 мар 2017, 17:54
masterprog1
У меня вот такая проблема
Манифест
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.win7.serv94_1">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service
android:name=".MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action
android:name="com.example.win7.serv94_1.MyService">
</action>
</intent-filter>
</service>
</application>
</manifest>
Сервис
Код: Выделить всё
package com.example.win7.serv94_1;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import java.util.concurrent.TimeUnit;
public class MyService extends Service {
final String LOG_TAG = "myLogs";
public void onCreate() {
super.onCreate();
Log.d(LOG_TAG, "MyService onCreate");
}
public void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "MyService onDestroy");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "MyService onStartCommand");
readFlags(flags);
MyRun mr = new MyRun(startId);
new Thread(mr).start();
return START_NOT_STICKY;
}
public IBinder onBind(Intent arg0) {
return null;
}
void readFlags(int flags) {
if ((flags&START_FLAG_REDELIVERY) == START_FLAG_REDELIVERY)
Log.d(LOG_TAG, "START_FLAG_REDELIVERY");
if ((flags&START_FLAG_RETRY) == START_FLAG_RETRY)
Log.d(LOG_TAG, "START_FLAG_RETRY");
}
class MyRun implements Runnable {
int startId;
public MyRun(int startId) {
this.startId = startId;
Log.d(LOG_TAG, "MyRun#" + startId + " create");
}
public void run() {
Log.d(LOG_TAG, "MyRun#" + startId + " start");
try {
TimeUnit.SECONDS.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
stop();
}
void stop() {
Log.d(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
+ startId + ") = " + stopSelfResult(startId));
}
}
}
И вот такая ошибка. Android 2.3. По моему запустить чисто сервис без активити не возможно. Как видно на фото Default Activity not found. Или автор что-то не договаривает)
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 21 май 2018, 00:01
ivipizerg
Не надеюсь на ответ, но я уже отчаялся в своих поисках =)) у меня проблема такая, на телефоне Asus ZerPhone Android 6.0.1 служба не перезапускаеться не смотря на то что onStartCommand возвращает START_STICKY. И что я только не пробовал, и стартовал службу в отдельном потоке, и вместо Service делал HandleService, и в службе имитировал какое либо действие( тупо цикл какой нить), и пробовал запускать новый поток из самой службы, и в манифесте всякие параметры прописывать, и подобие StartSelf делать(и напрямую наглым образом и через аларм менеджер подождав некоторое время) не стартует и все, хоть убейте. Убиваем приложение служба убивается и все, тишина.
Код: Выделить всё
////////////////////////////////////////////////////// ACTIVITY///////////////////////////////////////////
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
startService(new Intent(this, MyService.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
////////////////////////////////////////////////////// ACTIVITY///////////////////////////////////////////
////////////////////////////////////////////////////// SERVICE///////////////////////////////////////////
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
public void onCreate() {
super.onCreate();
Log.i("SERVICE1","onCreate");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("SERVICE1","onStartCommand");
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
Log.i("SERVICE1","onTaskRemoved");
}
@Override
public void onDestroy() {
Log.i("SERVICE1","onDestroy");
super.onDestroy();
}
}
////////////////////////////////////////////////////// SERVICE///////////////////////////////////////////
////////////////////////////////////////////////////// MANIFEST///////////////////////////////////////////
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>
////////////////////////////////////////////////////// MANIFEST///////////////////////////////////////////
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 25 июл 2019, 16:17
geka3
Уважаемые форумчане.
Нужна Ваша помощь.
Проблем при установке сервиса не было.
При попытке запустить сервис с отдельного приложение ничего не происходит, при этом не выскакивает никакой ошибки.
Команду "
command to start service has done well." в логах получаю (вывод в лог сразу после startService(intent)),
а "
MyService onCreate" не получаю.
Чтоб установить сервис в
Run/Debug Configuration -> General -> Launch установил
Nothing
Также прописал: intent.setPackage("com.example.p0942_servicekillserver");
Тестирую на реальном устройстве, Android 5.1
Подскажите, пожалуйста, в чем может быть проблема?
Заранее спасибо.
MainActivity:
Код: Выделить всё
package com.example.p0941_servicekillclient;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClickStart(View v) {
Intent intent = new Intent("com.example.p0942_servicekillserver.MyService");
intent.putExtra("name", "value");
intent.setPackage("com.example.p0942_servicekillserver");
startService(intent);
Log.i("myLogs"," command to start service has done well. ");
}
}
Манифест приложения
Код: Выделить всё
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.p0941_servicekillclient">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MyService
Код: Выделить всё
package com.example.p0942_servicekillserver;
import java.util.concurrent.TimeUnit;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
final String LOG_TAG = "myLogs";
public void onCreate() {
super.onCreate();
Log.i(LOG_TAG, "MyService onCreate");
}
public void onDestroy() {
super.onDestroy();
Log.i(LOG_TAG, "MyService onDestroy");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(LOG_TAG, "MyService onStartCommand");
readFlags(flags);
MyRun mr = new MyRun(startId);
new Thread(mr).start();
return START_NOT_STICKY;
}
public IBinder onBind(Intent arg0) {
return null;
}
void readFlags(int flags) {
if ((flags&START_FLAG_REDELIVERY) == START_FLAG_REDELIVERY)
Log.i(LOG_TAG, "START_FLAG_REDELIVERY");
if ((flags&START_FLAG_RETRY) == START_FLAG_RETRY)
Log.i(LOG_TAG, "START_FLAG_RETRY");
}
class MyRun implements Runnable {
int startId;
public MyRun(int startId) {
this.startId = startId;
Log.i(LOG_TAG, "MyRun#" + startId + " create");
}
public void run() {
Log.i(LOG_TAG, "MyRun#" + startId + " start");
try {
TimeUnit.SECONDS.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
stop();
}
void stop() {
Log.i(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
+ startId + ") = " + stopSelfResult(startId));
}
}
}
Манифест сервиса
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.p0942_servicekillserver">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service
android:name=".MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.p0942_servicekillserver.MyService"/>
</intent-filter>
</service>
</application>
</manifest>
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 06 авг 2019, 11:04
Alex_AndroDev_95
geka3 писал(а): ↑25 июл 2019, 16:17
Уважаемые форумчане.
Нужна Ваша помощь.
Проблем при установке сервиса не было.
При попытке запустить сервис с отдельного приложение ничего не происходит, при этом не выскакивает никакой ошибки.
Команду "
command to start service has done well." в логах получаю (вывод в лог сразу после startService(intent)),
а "
MyService onCreate" не получаю.
Чтоб установить сервис в
Run/Debug Configuration -> General -> Launch установил
Nothing
Также прописал: intent.setPackage("com.example.p0942_servicekillserver");
Тестирую на реальном устройстве, Android 5.1
Подскажите, пожалуйста, в чем может быть проблема?
Заранее спасибо.
MainActivity:
Код: Выделить всё
package com.example.p0941_servicekillclient;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClickStart(View v) {
Intent intent = new Intent("com.example.p0942_servicekillserver.MyService");
intent.putExtra("name", "value");
intent.setPackage("com.example.p0942_servicekillserver");
startService(intent);
Log.i("myLogs"," command to start service has done well. ");
}
}
Манифест приложения
Код: Выделить всё
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.p0941_servicekillclient">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MyService
Код: Выделить всё
package com.example.p0942_servicekillserver;
import java.util.concurrent.TimeUnit;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
final String LOG_TAG = "myLogs";
public void onCreate() {
super.onCreate();
Log.i(LOG_TAG, "MyService onCreate");
}
public void onDestroy() {
super.onDestroy();
Log.i(LOG_TAG, "MyService onDestroy");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(LOG_TAG, "MyService onStartCommand");
readFlags(flags);
MyRun mr = new MyRun(startId);
new Thread(mr).start();
return START_NOT_STICKY;
}
public IBinder onBind(Intent arg0) {
return null;
}
void readFlags(int flags) {
if ((flags&START_FLAG_REDELIVERY) == START_FLAG_REDELIVERY)
Log.i(LOG_TAG, "START_FLAG_REDELIVERY");
if ((flags&START_FLAG_RETRY) == START_FLAG_RETRY)
Log.i(LOG_TAG, "START_FLAG_RETRY");
}
class MyRun implements Runnable {
int startId;
public MyRun(int startId) {
this.startId = startId;
Log.i(LOG_TAG, "MyRun#" + startId + " create");
}
public void run() {
Log.i(LOG_TAG, "MyRun#" + startId + " start");
try {
TimeUnit.SECONDS.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
stop();
}
void stop() {
Log.i(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
+ startId + ") = " + stopSelfResult(startId));
}
}
}
Манифест сервиса
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.p0942_servicekillserver">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service
android:name=".MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.p0942_servicekillserver.MyService"/>
</intent-filter>
</service>
</application>
</manifest>
В официальной документации написано, что начиная с Android 5.0 и выше для старта сервиса или его биндинга нужно использовать явные интенты. Запуск сервиса в другом приложении через неявный интент запрещено самой ОС. Сам очень долго возился с этим вопросом. Сейчас пробую сделать все в одном приложении. Надеюсь, что заработает.
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 30 авг 2019, 18:08
Lastandlost
Доброго времени суток
Подскажите пожалуйста где в Android studio можно найти функцию "Stop Process" (или его аналог) для остановки запущенного процесса (сервиса)?
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 14 июл 2021, 06:20
Serj_61
Lastandlost писал(а): ↑30 авг 2019, 18:08
Доброго времени суток
Подскажите пожалуйста где в Android studio можно найти функцию "Stop Process" (или его аналог) для остановки запущенного процесса (сервиса)?
Похоже форум умер...
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 07 дек 2021, 20:30
Shant
Kamin писал(а): ↑26 сен 2016, 18:36
Dimon4ir писал(а):rezak90 писал(а):у меня что то не понятки с манифестом, пишет что не может найти активити в проекте где только сервис. Как должен выглядеть манифест?
таже проблема (Could not identify launch activity: Default Activity not found
Error while Launching activity) в AndroidStudio, класс находится в правильном пакете, какие еще есть решения?
и кто знает как посмотреть запущенные сервисы на genimotion из под AndroidStudio?
В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".
Спасибо Вам большое!!! Никак не мог разобраться, помогли
Re: Урок 94. Service. Подробно про onStartCommand
Добавлено: 12 мар 2022, 14:12
feda
Dependent features configured but no package ID was set.
Вот такая ошибка при компиляции клиента из урока. Использую явный вызов интент. Сервис и клиент в разных модулях. Зависимость на сервисное приложение из урока есть в build.gradle. applicationId тоже указаны и для сервиса и для клиента. Не пойму в чем причина ошибки