gpt4 book ai didi

Android appwidget 服务无法启动

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:34 24 4
gpt4 key购买 nike

当我在 Debug模式下运行时,我似乎无法到达服务内部的任何断点,这是为什么?

    @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
context.startService(new Intent(context, UpdateService.class));
}

public static class UpdateService extends Service {

@Override
public void onStart(Intent intent, int startId) {
// Build the widget update for today
RemoteViews updateViews = buildUpdate(this);

// Push update for this widget to the home screen
ComponentName thisWidget = new ComponentName(this, WidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, updateViews);
}

public RemoteViews buildUpdate(Context context) {
return new RemoteViews(context.getPackageName(), R.id.widget_main_layout);
}


@Override
public IBinder onBind(Intent intent) {
return null;
}
}

最佳答案

“onUpdate”方法仅在小部件初始化(例如放在主屏幕上)或 updatePeriodMillis 过期时执行。如果你想执行服务,例如通过单击小部件,您必须像这样“附加”一个待处理的 Intent :

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final Intent intent = new Intent(context, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

// Get the layout for the App Widget and attach an on-click listener to
// the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout....);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
for(int i=0,n=appWidgetIds.length;i<n;i++){
int appWidgetId = appWidgetIds[i];
appWidgetManager.updateAppWidget(appWidgetId , views);
}

(已清理的工作小部件版本)。

重点是,onUpdate() 方法实际上很少执行。与小部件的真正交互是通过未决 Intent 指定的。

关于Android appwidget 服务无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com