AlarmManager永远不会启动我的服务

时间:2015-08-20 15:14:54

标签: android android-service alarmmanager android-alarms

在我的应用程序中,我正在尝试使用ERROR: invalid value "Augu-21st" for "Month" DETAIL: The given value did not match any of the allowed values for this field. 启动服务。 AlarmManager的代码如下:

AlarmManager
下面的

是服务类:

public class Main extends Activity {

        ...

        @Override
        protected void onStart() {
            super.onStart();

            Intent intent = new Intent(this, MyService.class);
            PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
            AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            alarm.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5*1000, 5*1000, pintent);
        }

        ...
}

和Android Manifest:

public class MyService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "MyService.onCreate()", Toast.LENGTH_LONG).show();
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @SuppressWarnings("deprecation")
    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Toast.makeText(this, "MyService.onStart()", Toast.LENGTH_LONG).show();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "MyService.onStartCommand()", Toast.LENGTH_LONG).show();
    }
}

正在运行<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.max.android.myapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.max.android.myapp.Main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <service android:enabled="true" android:name="com.max.android.myapp.SubsService" /> </manifest> 我可以看到我的警报:

adb shell dumpsys alarm

RTC_WAKEUP #0: Alarm{41878860 type 0 com.max.android.myapp} type=0 when=+3s954ms repeatInterval=5000 count=1 operation=PendingIntent{41878850: PendingIntentRecord{41878760 com.max.android.myapp startService}} 永远不会开始。为什么这不起作用?

2 个答案:

答案 0 :(得分:0)

解决。看了adb logcat后我发现了这个警告:W/ActivityManager( 1506): Unable to start service Intent { flg=0x4 cmp=com.max.android.myapp/.SubsService (has extras) }: not found在AndroidManifest.xml中,我有&lt;服务&GT;声明&lt;应用程序&gt;而不是嵌套在里面。

答案 1 :(得分:-1)

SystemClock.elapsedRealtime

  

返回自启动以来的毫秒数,包括睡眠时间。

您可以通过调用

获取当前时间(以毫秒为单位)
Powershell.exe -ExecutionPolicy Bypass -File "test1.ps1" %Param1% %Param2%

请参阅https://developer.android.com/training/scheduling/alarms.html