Android 創建單獨的服務運行在後臺(無界面)
阿新 • • 發佈:2018-04-16
diy target 清單文件 manifest col nod actual sts AS
轉自:https://blog.csdn.net/a704225995/article/details/56481934
今天項目有個需求是,開啟一個服務單獨運行在後臺,而且還不能有界面,在度娘搜索了一圈也沒發現可以完美解決的方法,然後自己嘗試解決的方法,開始的思路是,把界面幹掉,也就是activity,然後將開啟Service的操作放在Application中,結果運行程序,在控制臺報錯了。
因為我把AndroidManifest.xml中的主Activity的配置給幹掉了,而程序找不到應用的入口,所有就無法打開應用,這種方法行不通。
然後我就想,把Activity保留,但是我不給它 setContentView(......);也就是不給他設置布局文件,
[java] view plain copy
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- System.out.println("MainActivity OnCreate()....");
- System.out.println("準備開啟服務");
- Intent intent = new Intent(MainActivity.this,TestService.class);
- startService(intent);
- }
- }
運行程序,程序打開了,服務也運行了,但是有個問題就是,界面也出來了,為什麽呢?
原因是在AndroidManifest.xml中Application節點中這個這行代碼android:theme="@style/AppTheme",既然是主題的問題導致界面的出現,那麽是想android是否提供了不顯示界面的主題?查找後問題終於解決了,解決方法:在清單文件中,主activity的配置中添加這行代碼
android:theme="@android:style/Theme.NoDisplay"
代碼:
[java] view plain copy
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name=".MainActivity"
- android:label="@string/app_name"
- 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>
- <service android:name="com.example.backgroundservice.TestService" >
- </service>
- </application>
我們還可以Ctrl+左鍵點進去看看這個主題是怎麽寫的:
[java] view plain copy
- <!-- Default theme for activities that don‘t actually display a UI; that
- is, they finish themselves before being resumed. -->
- <style name="Theme.NoDisplay">
- <item name="android:windowBackground">@null</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowIsTranslucent">true</item>
- <item name="android:windowAnimationStyle">@null</item>
- <item name="android:windowDisablePreview">true</item>
- <item name="android:windowNoDisplay">true</item>
- </style>
運行程序,服務開啟了,界面也不顯示,完美解決了後臺啟動服務的進程。
Android 創建單獨的服務運行在後臺(無界面)