手机重启后,小工具的按钮不起作用

时间:2012-07-12 10:21:54

标签: android android-widget widget boot

好吧,我有一个桌面小部件,里面有几个按钮。每个按钮都应该启动一个Activity。一切都很顺利,但当我重新启动手机时,小部件按钮不再起作用了。当然,当我删除小部件并再次添加它时,一切都会再次运行。有什么问题?我这样实现了它:

清单

<receiver android:name=".MyWidget">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        ...
    </intent-filter>
    ...
</receiver>

RECEIVER

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // TODO Auto-generated method stub
        super.onUpdate(context, appWidgetManager, appWidgetIds);

        // in service, due to possible ANR erors
        Intent newIntent = new Intent(context, UpdateService.class);
        newIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        context.startService(newIntent);
        return;
    }

UPDATESERVICE(其目标服务不是标准服务)

    private boolean update() {
                    ...

            popup.showShort("whoaaa - onUpdate");

            i = new Intent(this, SettingsActivity.class);
            pi = PendingIntent.getActivity(context, 2, i, PendingIntent.FLAG_CANCEL_CURRENT);
            updateViews.setOnClickPendingIntent(R.id.btnSettings, pi);

            i = new Intent(this, AboutActivity.class);
            pi = PendingIntent.getActivity(context, 3, i, PendingIntent.FLAG_UPDATE_CURRENT);
            updateViews.setOnClickPendingIntent(R.id.btnAbout, pi);

                   ...
        }

最好的是,即使电话重新启动,我也可以在每次更新时看到弹出窗口。所以它100%确定在重启后我的receiver运行其onUpdate方法,该方法触发我的UpdateService(其意图服务)并且其update方法正确运行。那么它是如何可能的,重启后我的小部件中的按钮没有响应点击?就像没有注册(或交付)意图一样。

PS:也许你会说,我需要BOOT_COMPLETED的注册接收器,但据我所知,只有当你需要做一些特别的工作时才需要(例如重启后重新注册警报 - 这不是我的情况)。

1 个答案:

答案 0 :(得分:1)

绝对无法理解,但是当我从onUpdate方法(在接收器中)添加代码时:

Intent newIntent = new Intent(context, UpdateService.class);
newIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
context.startService(newIntent);

onEnabled它有效...但它真的很难理解,因为我的更新方法(在UpdateService中)总是被正确触发,我看到弹出窗口......

现在它被解雇两次(从onEnabled开始,之后立即从onUpdate开始)并且它有效...谁可以解释这个?我可能错过了很多非常重要的文档。

编辑:更正,它有时只能工作....奇怪