ServiceからActivityを起動する場合は、以下のような感じです
Java
1public class YourService extends Service {
2
3 @Override
4 public final int onStartCommand(final Intent intent, final int flags, final int startId) {
5 // 何かの処理
6
7 // Activityの起動
8 Context context = this.getApplicationContext();
9 Intent intent = new Intent(context, YourActivity.class);
10 intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
11 context.startActivity(intent);
12
13 // Serviceの終了など
14 stopSelf();
15 }
16}
ですが、Android端末がスリープしているなどの時にはService自体が
動かない場合もあるので、そういう場合もActivity起動して欲しい場合は
AlarmManager
を使うのが良いでしょう。
例えば、10分後にActivity起動して欲しいなら、以下のような感じで、Activity起動の登録をすることができます
Java
1
2 public final static long NEXT_WAKE_UP_TIME = 10 * 60 * 1000; ///< 10分後
3
4 private void registWakeUpYourActivity() {
5 Context context = this.getApplicationContext();
6 Intent serviceIntent = new Intent(context, YourService.class);
7 serviceIntent.setPackage("com.example.your.service.YourService");
8 final PendingIntent pendingIntent = PendingIntent.getService(context, 0, serviceIntent, 0);
9 final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
10 final long nextWakeupTime = System.currentTimeMillis() + NEXT_WAKE_UP_TIME;
11 alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, nextWakeupTime, pendingIntent);
12 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/13 05:54