Android小工具停止工作随机(Android Widget stops working rand

2019-08-01 21:00发布

我一直在努力解决这个问题了三天,我已经看了每一个问题就在这里的回答。 我上有一个按钮控件,所有我想它做的是启动一个服务每次被点击。 问题是,按钮停止工作随机。 我不能在所有重建它,我不知道是什么原因造成的。 我的服务电话stopSelf(); 但我有这个问题,广播接收器也让我相信这个问题是在小部件,而不是在服务。 下面是代码

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[]     appWidgetIds) 
{

Log.i("Widget", "onUpdate");

final int N = appWidgetIds.length;

    for (int i=0; i<N; i++) 
    {

        int appWidgetId = appWidgetIds[i];

        Log.i("Widget", "onUpdateLoop");


        Intent intent = new Intent(context, ServiceWidgetAction.class);
        intent.setAction(Long.toString(System.currentTimeMillis()));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent pendingIntent = PendingIntent
                .getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        RemoteViews views = new RemoteViews(context.getPackageName(), 
               R.layout.widget);

        views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);

        views.setTextViewText(
                R.id.widgetTextView,
                "Some text");

        appWidgetManager.updateAppWidget(appWidgetId, views);

    }

}

我一遍又一遍地检查这个代码,我不知道为什么它是这样做的。 为此,它会在3个不同的手机,我无法重新创建它。 我试过力停止的应用程序,从任务管理器中添加新部件等,以获得小部件停止工作清除它,它不会。 然而,当我早上醒来的小部件不再起作用。 任何帮助将不胜感激。

Answer 1:

我最终搞清楚的问题。 我正在更新从其他地方小部件的应用程序,我没有为每一个完整的代码。 换句话说我的应用程序在这样的小部件更新textviews

    RemoteViews views = new RemoteViews(context.getPackageName(), 
           R.layout.widget);

    views.setTextViewText(
            R.id.widgetTextView,
            "Some text");

    appWidgetManager.updateAppWidget(appWidgetId, views);

但它需要整个代码保持注册这样的按钮:

    Intent intent = new Intent(context, ServiceWidgetAction.class);
    intent.setAction(Long.toString(System.currentTimeMillis()));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent pendingIntent = PendingIntent
            .getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    RemoteViews views = new RemoteViews(context.getPackageName(), 
           R.layout.widget);

    views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);

    views.setTextViewText(
            R.id.widgetTextView,
            "Some text");

    appWidgetManager.updateAppWidget(appWidgetId, views);

因此,底线是,每当你从你的应用程序中更新的窗口小部件,确保它看起来酷似的小部件本身的代码。 不要留下任何东西了。



Answer 2:

你安装你的widget到SD卡?

谷歌建议安装所有部件,报警器和接收应用程序类型分为内部存储,由于系统不同步的问题是这样的。

也许不是解决办法,而是“一定要勾选”;)

android:installLocation="internalOnly"


文章来源: Android Widget stops working randomly