내 응용 프로그램에 다음 시나리오가 있습니다. 내 응용 프로그램에 UI가 없습니다. 대신 부팅시 시작되고 계속 실행되는 서비스가 있습니다.
기본 활동없이 매니페스트 파일을 구성하려면 어떻게해야합니까? 활동없이 내 앱을 실행할 수 있습니까? 내 앱을 시작하면 내 서비스가 시작됩니다. 이것이 가능한가?
서비스를 시작하기 위해 반투명 활동을 만들고 싶지 않습니다.
답변:
반투명 활동을 사용하고 싶지 않다고 말했지만 이것이 가장 좋은 방법 인 것 같습니다.
Theme.Translucent.NoTitleBar
.setContentView()
.onCreate()
에서 startService()
.finish()
서비스를 시작한 후 활동을 종료하십시오 .즉, 활동이 표시되지 않아도됩니다. 서비스가 실행 중인지 확인한 다음 종료 할 수 있습니다. 원하는대로 들립니다.
서비스를 시작 중이거나 이미 실행 중임을 사용자에게 알리는 알림 을 적어도 표시하는 것이 좋습니다 . 실행기 아이콘을 누를 때 아무것도하지 않는 것처럼 보이는 것은 매우 나쁜 사용자 경험입니다.
예 , 애플리케이션이 부팅 될 때 BroadcastReceiver
호출 하는 을 생성하여 수행 할 수 있습니다 Service
. 여기에 내가 준 완전한 대답이 있습니다.
Android-부팅시 서비스 시작
응용 프로그램에 대한 아이콘 / 실행기를 원하지 않는 경우에도 그렇게 할 수 있습니다.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Service
정상적으로 선언 된대로 선언하십시오 .
Service
부팅시 시작해도 괜찮은 것처럼 들리지만 main이없는 방법을 알고 싶어 Activity
하지만 Service
런처 아이콘을 눌렀을 때 실행 중인지 확인하기 만하면 됩니다.
활동이나 서비스가없는 앱을 만드는 이유는 시작할 필요가없는 홈 화면 위젯 앱을 만들기 때문일 수 있습니다.
프로젝트를 시작하면 활동을 생성하지 마십시오. 프로젝트를 만든 후 실행을 누르십시오. Android 스튜디오에서 No default activity found
. 구성 편집 ( 실행 메뉴에서)을
클릭 하고 실행 옵션 부분에서 실행 값을 Nothing으로 설정하십시오 . 그런 다음 확인을 클릭하고 앱을 실행하십시오.
( 런처 활동이 없으므로 앱 메뉴에 앱이 표시되지 않습니다. )
Android Studio 버전 2.3
몇 가지 간단한 단계를 따라 주 활동없이 서비스를 만들 수 있습니다. Android Studio를 통해이 앱을 설치하고 일반 앱처럼 디버그 할 수 있습니다.
먼저 Android Studio에서 활동없이 프로젝트를 만듭니다. 그런 다음 서비스 클래스를 만들고 AndroidManifest.xml에 서비스를 추가합니다.
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service android:name="com.whatever.myservice.MyService">
<intent-filter>
<action android:name="com.whatever.myservice.MyService" />
</intent-filter>
</service>
</application>
이제 "실행"버튼 (녹색 화살표) 옆의 드롭 다운에서 "구성 편집"으로 이동하고 "실행 옵션"에서 "없음"을 선택합니다. 이를 통해 Android Studio가 Main Activity가 없다고 불평하지 않고 서비스를 설치할 수 있습니다.
일단 설치되면 서비스는 실행되지 않지만 다음 adb 쉘 명령으로 시작할 수 있습니다.
am startservice -n com.whatever.myservice/.MyService
실행 중인지 확인할 수 있습니다 ...
ps | grep whatever
아직 시도하지 않았지만 Android Studio에서 자동으로 서비스를 시작하도록 할 수 있습니다. 이것은 "구성 편집"메뉴에서 수행됩니다.