小部件停止响应点击(小部件冻结)

时间:2015-04-13 05:38:39

标签: android widget response freeze start-activity

我有一个简单的应用程序与小部件。 Widget在一段时间内运行良好。打开和关闭另一个应用程序(例如大多数情况下的某个游戏)后,我的小部件停止响应点击。你知道如何修复小部件冻结吗?

我发现了类似的情况,但没有成功:Android widget not responding to touchesAndroid widget buttons stop workingAndroid Widget stops working randomly,atc。

我的实际Widget.class:

public class Widget extends AppWidgetProvider{
        private DBManager dbManager;

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

            final int N = appWidgetIds.length;
            String URI_SCHEME = "A";

            // Perform this loop procedure for each App Widget that belongs to this provider
            for (int i=0; i<N; i++) {
                int appWidgetId = appWidgetIds[i];

                // Create an Intent to launch ExampleActivity
                Intent intent = new Intent(context, MainOverview.class);
                Intent intent2 = new Intent(context, AddFragment.class);
                intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
                intent2.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetId);
                intent2.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetId);
                PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT);

                // Get the layout for the App Widget and attach an on-click listener
                // to the button
                RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
                views.setOnClickPendingIntent(R.id.widget_all, pendingIntent);
                views.setOnClickPendingIntent(R.id.widget_add, pendingIntent2);

                Uri data = Uri.withAppendedPath(
                        Uri.parse(URI_SCHEME + "://widget/id/")
                        ,String.valueOf(appWidgetId));
                intent.setData(data);
                intent2.setData(data);

                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM", Locale.ENGLISH);
                final Calendar calendar = new GregorianCalendar();
                String text_date = sdf.format(calendar.getTime());
                CharSequence sumd = (CharSequence) text_date;
                views.setTextViewText(R.id.widget_date, sumd);

                dbManager = new DBManager(context);
                dbManager.open();

                int totalPayed = dbManager.getTotalPayed(text_date);
                CharSequence sumw = Integer.toString(totalPayed);
                views.setTextViewText(R.id.widget_summary, sumw);

                dbManager.close();

                // Tell the AppWidgetManager to perform an update on the current app widget
                appWidgetManager.updateAppWidget(appWidgetId, views);

                // Update the widgets via the service
                context.startService(intent);
                context.startService(intent2);
            }
            super.onUpdate(context, appWidgetManager, appWidgetIds);
        }

        @Override
        public void onReceive(Context context, Intent intent)
        {
                super.onReceive(context, intent);

        }

    }

我的实际widget_provider.xml:

 <?xml version="1.0" encoding="utf-8"?>
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:initialLayout="@layout/widget"
        android:minHeight="40dp"
        android:minWidth="110dp"
        android:resizeMode="horizontal|vertical"
        android:previewImage="@drawable/logo"
        android:updatePeriodMillis="36000000" >
    </appwidget-provider>

我的AndroidManifest.xml的实际部分:

   <receiver android:name=".Widget"
                android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                </intent-filter>
                <meta-data
                    android:name="android.appwidget.provider"
                    android:resource="@xml/widget_provider" />
            </receiver>

0 个答案:

没有答案