Должны ли каждая деятельность иметь макет?

Я только начинаю работать с Android и читаю BroadcastReceiver. Поскольку MainActivity использовался только для получения времени будильника в считанные секунды, мне казалось, что нужно, чтобы файлы XML файлов были необходимы для каждой активности в Android. Я имею в виду, возможно ли иметь приложение, которое при запуске не показывает вид, но успешно настроит приемник?

Ответ 1

Ответ - да, возможно. Не нужно иметь пользовательский интерфейс. Он упоминается в документации, например:

Активность - это единственная, целенаправленная вещь, которую пользователь может сделать. Почти все действия взаимодействуют с пользователем [...]

(см. http://developer.android.com/reference/android/app/Activity.html)

Связанный вопрос SO: fooobar.com/questions/927339/...

Например, чтобы отобразить Toast из Activity без макета, вы должны определить действие в своем манифесте так:

<activity
    android:name=".MainActivity"
    android:theme="@android:style/Theme.NoDisplay">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Код будет выглядеть так:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Toast.makeText(this, "I'm alive", Toast.LENGTH_LONG).show();
        finish();
    }
}

Ответ 2

Вы можете реализовать Activity без пользовательского интерфейса. В манифесте вы можете указать android:theme="@android:style/Theme.NoDisplay". Взгляните на это

Вы также можете реализовать Сервис, у которого нет пользовательского интерфейса, поэтому вам не нужна инфляция макета. Служба просто работает в фоновом режиме и не отображает просмотров. Взгляните на Руководство по обучению Android и API, чтобы узнать больше о сервисах

Ответ 3

Я думаю, вам нужно больше понять, что такое контекст в Android. BroadcastReceiver отличается от Activity, макетная инфляция не нужна.