我有一项活动,我希望在不同时间使用广播接收器中的不同变量启动。
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase("tv.abcd.v4.ORIGINAL_VIDEO_SCENE")){
channelName = intent.getExtras().getString("com.abcd.Channel");
JSONObject json = new JSONObject(intent.getExtras().getString("com.abcd.Data"));
String incomingScene = json.getString("url");
scene.putExtra("channel", channelName);
scene.putExtra("url", incomingScene);
scene.addFlags(Intent.FLAG_FROM_BACKGROUND);
scene.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
scene.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scene);
}
我有通过Intent和活动接收器启动活动的代码,以显示数据。
Intent intent = getIntent();
sceneUrl = intent.getStringExtra("url");
Log.d("Image.incomingscene.url",sceneUrl);
channelName = intent.getStringExtra("channel");
Log.d("Image.incomingSceneAvatar",networkAvatar);
image = (ImageView)findViewById(R.id.imageView1);
image.setScaleType(ScaleType.FIT_CENTER);
progressBar = (ProgressBar)findViewById(R.id.progressBar1);
Picasso.with(this).load(sceneUrl).skipMemoryCache().fit().into(image, new EmptyCallback() {
});
此后,我想从广播接收器再次使用不同的数据启动相同的活动。所以我希望以前的活动能够解决问题并允许这个新实例启动。
如何完成这项壮举?
答案 0 :(得分:1)
从活动中注册另一个广播接收器。然后,当你想杀死它时,从你提到的广播接收器发送广播消息。
在您的broadcastReceiver中执行以下操作:
public static final String CLOSE_Activity= "com.mypackage.closeactivity";
并在yopr OnReceive方法中执行以下操作:
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("HIT OUTGOING");
Intent i = new Intent();
i.setAction(CLOSE_Activity);
context.sendBroadcast(i);
}
然后在你的活动中找到一个接收者并在onResume方法中注册它并在onPause方法中取消它,如下所示:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(RECEIVER_Class.CLOSE_Activity)) {
finish();
}
}
}
活动onResume方法:
@Override
public void onResume() {
registerReceiver(broadcastReceiver, new IntentFilter(RECEIVER_Class.CLOSE_Activity));
}
活动onPause方法:
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
请给我一些反馈
希望有所帮助。