我正在使用 IntentService 在后台更改墙纸。它在收到推送通知时被调用。如果在应用程序打开时收到通知,下面的代码可以正常工作。但是如果应用程序被关闭/杀死(通过在菜单按钮的帮助下将其刷掉)则不起作用
@Override
protected void onHandleIntent(Intent intent) {
//Toast.makeText(this, "Intent", Toast.LENGTH_SHORT).show();
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String imageUrl = intent.getExtras().getString("imageUrl");
try {
URL url;
try {
WallpaperManager myWallpaperManager = WallpaperManager
.getInstance(MySingletonClass.mainActivityInstance);
url = new URL(
imageUrl);
Bitmap bmp = BitmapFactory.decodeStream(url
.openConnection().getInputStream());
myWallpaperManager.setBitmap(bmp);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
PushReceiver.completeWakefulIntent(intent);
}
打开应用程序时工作正常。当关闭/杀死时,它无法创建 WallpaperManager 的实例并抛出异常。
W/System.err: java.lang.NullPointerException
W/System.err: at android.app.WallpaperManager.getInstance(WallpaperManager.java:361)