【发布时间】:2018-06-23 22:38:39
【问题描述】:
我已经实现了一个警报管理器,它运行良好,每 15 分钟触发一次。现在我想使用警报每 15 分钟调用一次 MainActivity 方法。所以我使用本地广播器到MainActivity (知道这是我手机上正在运行的当前活动) 来传输启动方法的命令。但问题是 MainActivity 没有在 onReceive 方法上接收数据。
报警
@Override
public void onReceive(Context context, Intent intent) {
cont = context;
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
String url = intent.getExtras().getString("url");
Log.w(TAG, "Service " + url);
new GetJSON_val(){
@Override
protected String[] doInBackground(String... url) {
Some Code...
@Override
protected void onPostExecute(String[] result) {
Some Code...
// I send the broadcast to main Activity
Log.e("sender", "Broadcasting message");
Intent intent = new Intent("custom-event-name");
intent.putExtra("message", "This is my message!");
LocalBroadcastManager.getInstance(cont).sendBroadcast(intent);
}
}
}
}.execute(url);
// End of alarm code
wl.release();
}
主要活动
@Override
public void onCreate(Bundle savedInstanceState) {
...
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("custom-event-name"));
...
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
String message = intent.getStringExtra("message");
Log.e("receiver", "Got message: " + message);
}
};
Local Broadcaster 是在 postExecute 方法中的 Alarm 类中创建的。
【问题讨论】:
标签: java android android-intent localbroadcastmanager