6

何時間もの調査の後、私は最終的に公式のヘルプに相談しています. なぜonHandleIntent()呼び出されないのですか?ここで何か問題がありますか?

主な活動onCreate()

mService = new Intent(context, xyz.class);
startService(mService);

それだけです。onStartCommand()が呼び出されますが、呼び出されませんonHandleIntent()

package com.autoalbumwallaperplus;

import android.app.IntentService;
import android.content.Intent;
import android.widget.Toast;

public class xyz extends IntentService {
    public xyz() {
        super("bmp");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this,"onStartCommand works!", Toast.LENGTH_SHORT).show();
        return super.onStartCommand(intent,flags,startId);
    }

    @Override
    protected void onHandleIntent(Intent workIntent) {
        Toast.makeText(this,"onHandleIntent works!", Toast.LENGTH_SHORT).show();
    }
}

これは OnHandleIntent の中にあります

    String imagepath = workIntent.getStringExtra("String");
    Toast.makeText(this, "it works" , Toast.LENGTH_SHORT).show();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    WindowManager hi = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE));
    int height = displayMetrics.heightPixels;
    int width = displayMetrics.widthPixels << 2;

    // ... First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    Bitmap decodedSampleBitmap = BitmapFactory.decodeFile(imagepath, options);

    // ... Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, width, height);

    // ... Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    decodedSampleBitmap = BitmapFactory.decodeFile(imagepath, options);

    // ... Set Wallpaper
    //Context context = getApplicationContext();
    WallpaperManager wm = WallpaperManager.getInstance(this);

    try {
        wm.setBitmap(decodedSampleBitmap);
    } catch (IOException e) {
    }
4

1 に答える 1

11

onStartCommand()Androidのドキュメントにあるように、メソッドを オーバーライドしているため、インテントサービスが開始されていない可能性があります。

「IntentService のこのメソッド(onStartCommand())をオーバーライドしないでください。代わりにonHandleIntent(Intent)、IntentService が開始要求を受信したときにシステムが呼び出す をオーバーライドしてください。」


これがあなたを助けることを願っています

于 2013-04-02T04:16:26.517 に答える