Какой самый чистый способ создания приложения без графического интерфейса? - PullRequest
0 голосов
/ 06 июля 2011

Доброе утро.

У меня вопрос о том, как создать приложение без графического интерфейса. Это должно начаться, когда пользователь нажимает значок. Читая другие посты, кажется, что естественным способом сделать это будет Служба.

Поскольку приложение не имеет графического интерфейса, нет смысла добавлять какие-либо действия. По этой причине Сервис должен быть не привязан. Итак, если нет компонента, вызывающего startService, и ни один внешний компонент не отправляет намерение, ¿как запускается служба?

Есть ли какой-либо атрибут в манифесте для достижения этого? Или может быть расширение приложения и использование onCreate для запуска службы?

Спасибо.

ОБНОВЛЕНИЕ: - Невозможно запустить Сервис в том же приложении без Намерения. Другими вариантами могут быть автозапуск или широковещательные приемники, но они не соответствуют моим требованиям. -Пробовал тестовое приложение без действий, и значок даже не отображается в панели запуска. Не знаю причину этого, возможно, связано с тем, что манифест не имеет активности LAUNCHER.

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Список приложений, отображаемых в модуле запуска Android, представляет собой список всех действий в системе с фильтром намерений LAUNCHER:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Если вы установите этоФильтр намерений на <service>, он не будет работать (только что попробовал).Таким образом, единственный способ сделать то, что вы хотите сделать, это через Activity.Я думаю, что самый чистый способ - что-то вроде этого:

public void onCreate(Bundle savedInstanceState) {
    Intent service = new Intent(this, MyService.class);
    startService(service);
    Toast.makeText(this, "Service started.", Toast.LENGTH_SHORT).show();
    finish();
}

Пользователь не увидит ничего, кроме небольшого сообщения в нижней части экрана, говорящего «Служба запущена».это автоматически исчезнет через пару секунд.Это чисто и удобно для пользователя.

0 голосов
/ 06 июля 2011

Служба запускается, когда кто-то звонит startService() или когда кто-то звонит bindService(). Обратите внимание, что если служба запускается только через bindService(), она будет автоматически остановлена, когда Activity либо явно отсоединяется от нее, либо уничтожается (и это было единственное связующее).

Вы можете объявить BOOT_COMPLETED_ACTION широковещательный приемник в вашем AndroidManifest.xml и запустить службу при загрузке системы. Но ваш сервис будет запускаться только при следующей перезагрузке устройства. И есть некоторые проблемы с приложениями без действий и это событие трансляции в Android 3.1. Более подробную информацию можно найти здесь .

В целом, хорошо иметь хотя бы одно действие в вашем приложении, даже если вашим основным компонентом является сервис. Это действие запустит службу, когда пользователь ее запустит, а также может предоставить некоторые возможности для настройки поведения службы.


Пример действия, которое запускает службу:

public class ServiceStarterActivity extends Activity
{       
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {       
        super.onCreate(savedInstanceState);       

        startService(new Intent(this, ServiceA.class));
        finish();
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...