我已经在带有主APP窗口的Android Studio中创建了一个Android小部件。这在AlarmManager上可以很好地工作,但是我将对其进行重新编码以使用具有运行,睡眠和启动功能的线程来更新小部件,但它不起作用。窗口小部件内容不会更新。
我让AlarmManager进入,被注释掉了。
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
import android.widget.RemoteViews;
public class UpdateWidget extends AppWidgetProvider {
private PendingIntent pendingIntent;
/*
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Intent i = new Intent(context, UpdateService.class);
pendingIntent = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 60000, pendingIntent);
// Onclick open the Main APP Window
for (int appWidgetId : appWidgetIds) {
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_content, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
*/
@Override
public void onUpdate(final Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
final Intent i = new Intent(context, UpdateService.class);
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(100);
runOnUiThread(new Runnable() {
@Override
public void run() {
PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
// Onclick open the Main APP Window
for (int appWidgetId : appWidgetIds) {
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_content, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent i){
super.onReceive(context, i);
}
private void runOnUiThread(Runnable runnable) {
}
} // public class UpdateWidget
(问题激活密钥占位符:您的帖子似乎大部分是代码;)抱歉。