Урок 94. Service. Подробно про onStartCommand
Re: Урок 94. Service. Подробно про onStartCommand
У меня другая проблема, сервис хоть и убивается, но поток живет и продолжает работать и в методе stop() все таки срабатывает stopSelfResult()=false, поэтому видимо сервис не оживает. Я в onStartCommand возвращаю START_REDELIVER_INTENT.
Re: Урок 94. Service. Подробно про onStartCommand
В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".Dimon4ir писал(а):таже проблема (Could not identify launch activity: Default Activity not foundrezak90 писал(а):у меня что то не понятки с манифестом, пишет что не может найти активити в проекте где только сервис. Как должен выглядеть манифест?
Error while Launching activity) в AndroidStudio, класс находится в правильном пакете, какие еще есть решения?
и кто знает как посмотреть запущенные сервисы на genimotion из под AndroidStudio?
Re: Урок 94. Service. Подробно про onStartCommand
2Kamin:
Спасибо за подсказку, тоже не мог разобраться, как запустить серис без активити.В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".
-
- Сообщения: 1
- Зарегистрирован: 17 мар 2017, 15:38
Re: Урок 94. Service. Подробно про onStartCommand
Так как документация кривенькая, уроки весьма полезны.
Вопрос автору следующий. Зачем создавали два процесса? В одном всё и так бы отработало, или это заготовка для следующих уроков...
Как ведет себя сервис при rorate screen также ни слова.
Вопрос автору следующий. Зачем создавали два процесса? В одном всё и так бы отработало, или это заготовка для следующих уроков...
Как ведет себя сервис при rorate screen также ни слова.
-
- Сообщения: 2
- Зарегистрирован: 18 мар 2017, 18:45
Re: Урок 94. Service. Подробно про onStartCommand
У меня вот такая проблема
Манифест
Сервис
И вот такая ошибка. Android 2.3. По моему запустить чисто сервис без активити не возможно. Как видно на фото Default Activity not found. Или автор что-то не договаривает)
Манифест
Код: Выделить всё
<?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));
}
}
}
- Вложения
-
- Error runnning.png (33.47 КБ) 10863 просмотра
Re: Урок 94. Service. Подробно про onStartCommand
Не надеюсь на ответ, но я уже отчаялся в своих поисках =)) у меня проблема такая, на телефоне 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
Уважаемые форумчане.
Нужна Ваша помощь.
Проблем при установке сервиса не было.
При попытке запустить сервис с отдельного приложение ничего не происходит, при этом не выскакивает никакой ошибки.
Команду "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:
Манифест приложения
MyService
Манифест сервиса
Нужна Ваша помощь.
Проблем при установке сервиса не было.
При попытке запустить сервис с отдельного приложение ничего не происходит, при этом не выскакивает никакой ошибки.
Команду "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>
Код: Выделить всё
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>
-
- Сообщения: 1
- Зарегистрирован: 06 авг 2019, 10:38
Re: Урок 94. Service. Подробно про onStartCommand
В официальной документации написано, что начиная с Android 5.0 и выше для старта сервиса или его биндинга нужно использовать явные интенты. Запуск сервиса в другом приложении через неявный интент запрещено самой ОС. Сам очень долго возился с этим вопросом. Сейчас пробую сделать все в одном приложении. Надеюсь, что заработает.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. "); } }
MyServiceКод: Выделить всё
<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>
Манифест сервисаКод: Выделить всё
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>
-
- Сообщения: 1
- Зарегистрирован: 30 авг 2019, 18:03
Re: Урок 94. Service. Подробно про onStartCommand
Доброго времени суток
Подскажите пожалуйста где в Android studio можно найти функцию "Stop Process" (или его аналог) для остановки запущенного процесса (сервиса)?
Подскажите пожалуйста где в Android studio можно найти функцию "Stop Process" (или его аналог) для остановки запущенного процесса (сервиса)?
Re: Урок 94. Service. Подробно про onStartCommand
Похоже форум умер...Lastandlost писал(а): ↑30 авг 2019, 18:08Доброго времени суток
Подскажите пожалуйста где в Android studio можно найти функцию "Stop Process" (или его аналог) для остановки запущенного процесса (сервиса)?
Re: Урок 94. Service. Подробно про onStartCommand
Спасибо Вам большое!!! Никак не мог разобраться, помоглиKamin писал(а): ↑26 сен 2016, 18:36В Android Studio идём в настройки запуска Run/Debug Configuration -> Android Application -> General -> Launch -> выбираем "Nothing".Dimon4ir писал(а):таже проблема (Could not identify launch activity: Default Activity not foundrezak90 писал(а):у меня что то не понятки с манифестом, пишет что не может найти активити в проекте где только сервис. Как должен выглядеть манифест?
Error while Launching activity) в AndroidStudio, класс находится в правильном пакете, какие еще есть решения?
и кто знает как посмотреть запущенные сервисы на genimotion из под AndroidStudio?
Re: Урок 94. Service. Подробно про onStartCommand
Dependent features configured but no package ID was set.
Вот такая ошибка при компиляции клиента из урока. Использую явный вызов интент. Сервис и клиент в разных модулях. Зависимость на сервисное приложение из урока есть в build.gradle. applicationId тоже указаны и для сервиса и для клиента. Не пойму в чем причина ошибки
Вот такая ошибка при компиляции клиента из урока. Использую явный вызов интент. Сервис и клиент в разных модулях. Зависимость на сервисное приложение из урока есть в build.gradle. applicationId тоже указаны и для сервиса и для клиента. Не пойму в чем причина ошибки