我想創建一個僅包含服務(無活動)的應用程序。該服務必須在啓動時啓動。 我的問題是,似乎引導接收器似乎沒有打電話,如果沒有活動。 我對以下示例進行了測試。 我有不同的文件:啓動時無需啓動服務
MyReceiver.java:
package com.test.teststartserviceatboot;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent i) {
Log.v("MyReceiver", "onReceive : ");
Intent intent = new Intent(ctx, MonService.class);
ctx.startService(intent);
}
}
MyService.java:
package com.test.teststartserviceatboot;
import android.app.Service;
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.v("MyService","onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0) {
Log.v("MyService","onBind");
return null;
}
}
MainActivity.java:
package com.test.teststartserviceatboot;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我只能修改AndroidManifest上我的幾個測試。
試驗1(與活動)
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" android:exported="false" android:label="MyService" > </service> <receiver android:name=".MyReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application>
- >重新啓動後,該服務是running.I查看日誌:
AtivityManager開始PROC用於廣播com.test.teststartserviceatboot com.test.teststartserviceatboot/.MyReceiver:PID = 1808 UID = 10156的GID = {50156}
MyReceiver的onReceive
爲MyService onStartCommand
試驗2(無活性)
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <service android:name=".MyService" android:exported="false" android:label="MyService" > </service> <receiver android:name=".MyReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application>
- >服務沒有運行
- 測試3
我使用試驗1(與活動)相同appllication。這次我殺了應用程序以重新啓動平板電腦(參數 - >應用程序 - > TestServiceAtBoot->強制停止)。 - >之後重新啓動,服務沒有運行
是否有必要對brodcast接收作品的活動?爲什麼?
感謝您的照顧。
我不這麼認爲。因爲它完美的工作而沒有在manifest.xml中註冊** Activity ** –
@MD他說當一個活動沒有在清單文件中註冊時它不工作 – Leo
@helene如何讓活動充滿活力? – Leo