androidでactivityの定期起動を考えています。
まず設定用のactivityで以下のとおり、MainMenuActivityにてAlarmManagerを5秒後にセットします。
Intent intent = new Intent(MainMenuActivity.this, EnterService.class); PendingIntent sender = PendingIntent.getBroadcast(MainMenuActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); // repeat long firstTime = SystemClock.elapsedRealtime(); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, 5*1000, sender);
さらにマニュフェストには
<activity android:name=".StartActivity" android:launchMode="singleTask" android:exported="true" android:label="@string/enter"/> <receiver android:name=".EnterService" />
と記載し、EnterServiceには以下のとおりとしています。
public class EnterTwtService extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, StartActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }
これによって、アプリ起動時にはStartActivityが起動するのですが、
バックグラウンドになっている時にはReceiverは起動するもののStartActivityが起動しません。
どなたか原因がわかる方お願いします。
コードはマークダウン記法でご提示ください。
マークダウンに付きましてはヘルプを御覧ください。
Android でのバックグラウンドの動作は Android/API のバージョンによってイロイロ(?)変わります。
お作りのアプリが対象としているのは幾つでしょうか。
[ブロードキャストの概要](https://developer.android.com/guide/components/broadcasts?hl=ja )
>>>>
ブロードキャスト レシーバーからアクティビティを開始しないようにしてください。特に複数のレシーバーが存在する場合に、ユーザー エクスペリエンスが低下します。代わりに、[通知](https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ja ) の表示を検討してください。
<<<<
ありがとうございます。
今後、マークダウン記法するように気を付けます。
申し訳ありません。
android/APIについてですが、
minSdk 28
targetSdk 30
で作成しています。
ブロードキャスト レシーバーからアクティビティを開始できなくなっているのでしょうか。
ありがとうございます。
勉強不足でした。
以前、android9で開発していたので、
現在もまだ普通にできるものと思っていました。
回答1件
あなたの回答
tips
プレビュー