2014-11-13 1 views
0

주기적으로 echo 5 초 동안 intentservice를 실행하고 싶습니다. 내 의도 서비스와 브로드 캐스트 리시버에 은 내가 log.e 사용하고 있지만 로그 캣에서 모든 로그하지 않은 : 내 FragmentActivity에서IntentService는 AlarmManager 및 broadcastReceiver를 사용하여 시작하지 않습니다.

:

public void scheduleAlarm(Context con) { 
     Intent intent = new Intent(con, CheckNotificationPerEach12HourBroadC.class); 
     final PendingIntent pIntent = PendingIntent.getBroadcast(con, 0, 
      intent, 0); 
     long firstMillis = System.currentTimeMillis(); // first run of alarm is immediate 
     AlarmManager alarm = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); 
     alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstMillis, intervalMillis, pIntent); 
     } 

내 브로드 캐스트 리시버 :

public class CheckNotificationPerEach12HourBroadC extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    Intent i = new Intent(context, CheckNotificationPerEach12Hour.class); 
    Log.e("CheckNotificationPerEach12HourBroadC", "fired"); 
    // i.putExtra("foo", "bar"); 
    context.startService(i); 
} 

} 

내 의도 서비스 :

내 manifest.xml에서
public class CheckNotificationPerEach12Hour extends IntentService{ 

public CheckNotificationPerEach12Hour() { 
    super("CheckNotificationPerEach12Hour"); 
    // TODO Auto-generated constructor stub 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    // TODO Auto-generated method stub 
    Log.e("intent ser", "10 second"); 

} 

} 

:

<receiver 
     android:name="com.shadyab.utilities.CheckNotificationPerEach12HourBroadC" 
     android:process=":remote" 
     > 
    </receiver> 

    <service 
     android:name="com.shadyab.utilities.CheckNotificationPerEach12Hour" 
     android:exported="false" 
     /> 
+0

5 초마다 (서비스중인) 메소드를 실행 하시겠습니까? –

+0

아니요, 12 시간마다 주기적으로 메소드를 실행하고 싶습니다. 이제이 메소드를 검사하고 싶습니다. –

+0

타이머 작업을 사용할 수 있습니다. 답변에서 언급하고 있습니다. –

답변

1

하는 서비스를 생성하고 방송 수신기에 문의하십시오.

public class ServiceTest extends Service { 

private Timer mTimer; 

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

@Override 
public void onCreate() { 
    super.onCreate(); 
    // getLogs(); 

    mTimer = new Timer(); 
    mTimer.schedule(timerTask, 5000, 5 * 1000); 

} 


TimerTask timerTask = new TimerTask() { 

    @Override 
    public void run() { 

     Log.wtf("service","running") 

    } 
}; 

} 
+0

실제로 MySQL에서 일부 데이터를 받고 싶습니다 (내 앱이 종료 된 경우에도). –

+0

응용 프로그램이 닫힌 경우에도 실행됩니다. –

+0

예,하지만 많은 자원을 소비합니다. –