android app同时多处理,android – 处理appwidget的多个实例

要为app小部件的每个实例提供唯一的小部件ID,您可以执行以下操作:

AppWidgetManager appWidgetManager = AppWidgetManager

.getInstance(ConfigurationActivity.this);

ComponentName thisAppWidget = new ComponentName(

ConfigurationActivity.this, WidgetProvider.class);

int[] appWidgetIds = appWidgetManager

.getAppWidgetIds(thisAppWidget);

Intent startBroadcast = new Intent(ConfigurationActivity.this,

WidgetProvider.class);

startBroadcast.putParcelableArrayListExtra("list", newsList);

startBroadcast.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,

appWidgetIds);

startBroadcast.setAction("android.appwidget.action.APPWIDGET_UPDATE");

sendBroadcast(startService);

要以唯一共享首选项保存数据,您可以执行以下操作:

public void setWidgetNewsCategory(Context context, String category,

int appWidgetId) {

Editor editor = context.getSharedPreferences(

PREFS_NAME_CATEGORY + String.valueOf(appWidgetId),

Context.MODE_PRIVATE).edit();

editor.putString(PREFS_VALUE_CATEGORY + String.valueOf(appWidgetId),

category);

editor.commit();

}

您可以按如下方式检索此共享pref值:

public String getWidgetNewsCategory(Context context, int appWidgetId) {

SharedPreferences sharedPreferences = context.getSharedPreferences(

PREFS_NAME_CATEGORY + String.valueOf(appWidgetId),

Context.MODE_PRIVATE);

return sharedPreferences.getString(

PREFS_VALUE_CATEGORY + String.valueOf(appWidgetId), null);

}

最后,在Widget Provider的onReceive方法中,执行以下操作:

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {

Bundle extras = intent.getExtras();

if (extras != null) {

int[] appWidgetIds = extras

.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);

if (appWidgetIds.length > 0) {

this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);//here you can call onUpdate method, and update your views as you wish

}

}

} else if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {

Bundle extras = intent.getExtras();

if (extras != null

&& extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)) {

final int appWidgetId = extras

.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);

this.onDeleted(context, new int[] { appWidgetId });

}

} else if (AppWidgetManager.ACTION_APPWIDGET_ENABLED.equals(action)) {

this.onEnabled(context);

} else if (AppWidgetManager.ACTION_APPWIDGET_DISABLED.equals(action)) {

this.onDisabled(context);

}

}

这只是对我有用的一般解决方案.希望它也适合你.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值