2015-09-28 84 views
0

我只是试图实现AlarmManager。我为报警管理器编写了代码,但代码无效。 AlarmManager不会触发广播接收器和服务。但是,当我不使用AlarmManager并简单地使用intent启动服务时,服务就会运行。如何让AlarmManager工作来定期安排服务? 下面是代码:报警管理器不工作?

MainActivity.java

package com.alarmmanager; 

import android.app.*; 
import android.os.Bundle; 
import android.content.*; 


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent intent = new Intent(this,AlarmReceiver.class); 
     PendingIntent pending =PendingIntent.getService(this, 0, intent, 0); 
     AlarmManager alarm =(AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
     alarm.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),15000,pending);  
    } 
} 

AlarmReceiver.java

package com.alarmmanager; 

import android.content.*; 


public class AlarmReceiver extends BroadcastReceiver 
{ 
    public void onReceive(Context context, Intent intent) 
    { 
     intent =new Intent(context,MainService.class); 
     context.startService(intent); 

    } 
} 

MainService.java

package com.alarmmanager; 


import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class MainService extends Service 
{ 

    public IBinder onBind(Intent intent) { 

     return null; 
    } 

    public void onCreate() { 

     Log.i("nilavs","nilav"); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
     } 


} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.alarmmanager" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="23" /> 

    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <service 
      android:name=".MainService" 
      android:enabled="true" 
     /> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:process=":remote" android:name=".AlarmReceiver"> 

</receiver> 

    </application> 

</manifest> 
+0

你调试了你的代码吗? – KishuDroid

+0

是的它说: - 源附件不包含文件classLoader.class的源 –

+0

http://stackoverflow.com/questions/8620294/how-to-attach-android-source-to-eclipse – KishuDroid

回答

0

您应该使用getBroadcast代替getService

PendingIntent pending =PendingIntent.getService(this, 0, intent, 0); 

编辑:

尝试将其设定为在未来开始火了 - 例如

alarm.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+5000,15000,pending); 
+0

对不起,但我我仍然面临同样的问题 –