Android 使用墙纸服务根据用户选择的频率设置墙纸
我正在使用墙纸服务在主屏幕上设置实时墙纸。我可以从资源中设置10张图片并进行轮换,Android 使用墙纸服务根据用户选择的频率设置墙纸,android,intervals,frequency,live-wallpaper,Android,Intervals,Frequency,Live Wallpaper,我正在使用墙纸服务在主屏幕上设置实时墙纸。我可以从资源中设置10张图片并进行轮换, 基于静态频率使用线程。我希望用户提供选择多个频率的选项。我试图用用户选择的频率传递线程睡眠持续时间。但是正在运行的线程既没有停止也没有更新值。 它将使用以前选择的频率更新墙纸。3周以来,我一直在不同程度上使用这个应用程序。我尝试过墙纸管理器和设置服务位图,报警管理器,但都停止设置墙纸后,一定时间。所以最后使用墙纸服务。帮助克服这个问题 class WallpaperEngine extends Engine {
基于静态频率使用线程。我希望用户提供选择多个频率的选项。我试图用用户选择的频率传递线程睡眠持续时间。但是正在运行的线程既没有停止也没有更新值。
它将使用以前选择的频率更新墙纸。3周以来,我一直在不同程度上使用这个应用程序。我尝试过墙纸管理器和设置服务位图,报警管理器,但都停止设置墙纸后,一定时间。所以最后使用墙纸服务。帮助克服这个问题
class WallpaperEngine extends Engine {
//frequency selected by user to update the wallpaper
private final int Wallpaper_DURATION = utils.getFrequency;
private int[] mImagesArray;
private int mImagesArrayIndex = 0;
private Thread mDrawWallpaper;
public WallpaperEngine() {
customWallpaperHelper = new CustomWallpaperHelper(getApplicationContext(), getResources());
mImagesArray = new int[] {R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five};
mDrawWallpaper = new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
drawFrame();
incrementCounter();
Thread.sleep(Wallpaper_DURATION);
}
} catch (Exception e) {
//
}
}
});
mDrawWallpaper.start();
}
private void incrementCounter() {
mImagesArrayIndex++;
if (mImagesArrayIndex >= mImagesArray.length) {
mImagesArrayIndex = 0;
}
}
private void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if (canvas != null) {
drawImage(canvas);
}
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
private void drawImage(Canvas canvas)
{
Bitmap image = BitmapFactory.decodeResource(getResources(),
mImagesArray[mImagesArrayIndex]);
Bitmap b=Bitmap.createScaledBitmap(image, canvas.getWidth(), canvas.getHeight(), true);
canvas.drawBitmap(b, 0,0, null);
}
我们可以看看
utils.getFrequency
的样子吗?然而,线程mDrawWallpaper
没有被终止的地方。所以你可能会在用户更改间隔选项时创建新实例。这正是我想要知道的终止线程的位置。Utils.getFrequency只是一个字段,我用它来更新用户选择的从活动到服务的时间间隔。它在用户更改时得到更新。我们可以看看utils.getFrequency
的样子吗?然而,线程mDrawWallpaper
没有被终止的地方。所以你可能会在用户更改间隔选项时创建新实例。这正是我想要知道的终止线程的位置。Utils.getFrequency只是一个字段,我用它来更新用户选择的从活动到服务的时间间隔。当用户更改时,它会得到更新。