Android 小部件在应用程序崩溃或用户杀死应用程序后停止接收数据?
我有一个在Android 小部件在应用程序崩溃或用户杀死应用程序后停止接收数据?,android,Android,我有一个在服务中播放音乐的应用程序。还有一个控制音乐播放器的小部件。一切正常 现在,在用户关闭应用程序后,或者如果应用程序崩溃,或者如果我使用System.exit()或getActivity().finish()要关闭它,存在一些问题。一切似乎都很正常,但不知何故,小部件不再接收广播,即使另一个活动仍然接收广播 小部件仍然能够发送广播,只是无法接收广播 谁能帮帮我吗 我的小部件中的代码: public void onUpdate(Context context, AppWidgetManage
服务中播放音乐的应用程序
。还有一个控制音乐播放器的小部件。一切正常
现在,在用户关闭应用程序后,或者如果应用程序崩溃,或者如果我使用System.exit()代码>或getActivity().finish()代码>要关闭它,存在一些问题。一切似乎都很正常,但不知何故,小部件不再接收广播,即使另一个活动仍然接收广播
小部件仍然能够发送广播,只是无法接收广播
谁能帮帮我吗
我的小部件中的代码:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
ma = (GlobalSongList)context.getApplicationContext();
context.getApplicationContext().registerReceiver(broadcastCoverReceiver, new IntentFilter(Music_service.BROADCAST_COVER));
context.getApplicationContext().registerReceiver(broadcastPlayPause, new IntentFilter(BROADCAST_PLAYPAUSE));
context.getApplicationContext().registerReceiver(checkagain, new IntentFilter("xyz"));
context.getApplicationContext().registerReceiver(intentshuttingdown, new IntentFilter("shutdown"));
RemoteViews controlButtons = new RemoteViews(context.getPackageName(),R.layout.widget);
Intent playIntent = new Intent(BROADCAST_PLAYPAUSE);
PendingIntent playPendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
controlButtons.setOnClickPendingIntent(R.id.bPlay, playPendingIntent);
Intent previousIntent = new Intent(why);
PendingIntent previousPendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT);
controlButtons.setOnClickPendingIntent(R.id.bprev, previousPendingIntent);
if(ma.NP_List.size()>0) {
controlButtons.setTextViewText(R.id.song, ma.NP_List.get(ma.position).song);
controlButtons.setTextViewText(R.id.artist, ma.NP_List.get(ma.position).getArtist());
Intent open_activityIntent = new Intent(BROADCAST_open_activity);
PendingIntent openactivityPendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, open_activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
controlButtons.setOnClickPendingIntent(R.id.parent, openactivityPendingIntent);
if(ma.boolMusicPlaying1 == true) {
controlButtons.setImageViewResource(R.id.bPlay, R.drawable.pause2);
} else {
controlButtons.setImageViewResource(R.id.bPlay, R.drawable.play);
}
} else if(ma.NP_List.size() == 0) {
controlButtons.setTextViewText(R.id.song, "");
controlButtons.setTextViewText(R.id.artist, "");
}
Intent nextIntent = new Intent(BROADCAST_SWAP);
nextIntent.putExtra("nextprev", 1);
PendingIntent nextPendingIntent = PendingIntent.getBroadcast(context, 0, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
controlButtons.setOnClickPendingIntent(R.id.bNext, nextPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, controlButtons);
}
public BroadcastReceiver broadcastCoverReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent serviceIntent) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context.getApplicationContext());
ComponentName thisWidget = new ComponentName(context.getApplicationContext(), MyWidget.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
if (appWidgetIds != null && appWidgetIds.length > 0) {
onUpdate(context, appWidgetManager, appWidgetIds);
}
}
};
在“活动”中,您应该分别在“恢复”和“暂停”上绑定和解除绑定后台服务
访问了解服务和活动之间的关系您应该使用android应用程序小部件,而不要使用广播,因为这是最传统的方式……文档中也提到了这一点我们将发布一些相关代码。没有人能从描述中帮助你,我们也需要看看你做了什么。但是System.exit()
可能已经是问题所在。切勿使用System.exit()
。操作系统控制应用程序何时被终止,试图干扰这只会导致问题。我已经编写了“或”这不是唯一的场景……请告诉我应该发布什么代码?所有相关代码、无法按预期工作的部分以及您认为可能重要的所有其他内容。服务代码,小部件代码或启动服务的活动代码?