Java File Observer方法的My onEvent()部分不使用';行不通

Java File Observer方法的My onEvent()部分不使用';行不通,java,android,file,events,fileobserver,Java,Android,File,Events,Fileobserver,我已经扫描了这里的所有相关问题和答案,但仍然找不到解决方案 服务类文件: public class otser extends Service { private WindowManager windowManager; private ImageView chatHead; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() {

我已经扫描了这里的所有相关问题和答案,但仍然找不到解决方案

服务类文件:

public class otser extends Service {

private WindowManager windowManager;
private ImageView chatHead;

@Override public IBinder onBind(Intent intent) {

    return null;
}

@Override public void onCreate() {
    super.onCreate();

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    chatHead = new ImageView(this);

    chatHead.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View v) {

        }
    });

    FileObserver observer = new FileObserver(android.os.Environment.getExternalStorageDirectory().toString() + "/Pictures/Screenshots") {
        @Override
        public void onEvent(int event, String file) {
            event &= FileObserver.ALL_EVENTS;

            if(event == FileObserver.CREATE){
                Toast.makeText(getApplicationContext(), "screenshot taken",
                        Toast.LENGTH_LONG).show();
            }
        }
    };

    observer.startWatching(); // start the observer


    Toast.makeText(getApplicationContext(), "service: OK",
            Toast.LENGTH_SHORT).show();

}}
根据其他帖子,我通过编程创建了一个文件,再次检查了路径,它确实存在,并且正确无误

活动类:

public class Home extends Activity {

Button showChatHead;
Button stopService;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);


    showChatHead = (Button) findViewById(R.id.gomb);
    stopService= (Button) findViewById(R.id.gomb2);

    showChatHead.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent i = new Intent(getApplicationContext(), ChatHeadService.class);
            startService(i);
        }
    });

   stopService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent i = new Intent(getApplicationContext(), ChatHeadService.class);
            stopService(i);
        }
    });
}}
服务类链接良好,最后一条Toast消息弹出,作为一个结论,只有观察者被跳过

有什么想法吗

提前谢谢


更新版本:

FileObserver fileObserver = new FileObserver(android.os.Environment.getExternalStorageDirectory().toString() + "/Pictures/Screenshots") {
        @Override
        public void onEvent(int event, String path) {

            Toast.makeText(getApplicationContext(), "method entered", Toast.LENGTH_SHORT).show();

            if (event == FileObserver.CREATE) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "File created", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    };

    fileObserver.startWatching();

未输入OnEnter方法,未出现“方法输入”toAST。在OnEnter方法的文档中,

< P>被提及,它将运行在另一个线程上,并且您应该考虑这一点。使用处理程序,Toast消息应显示如下:

private Handler handler = new Handler();

@Override
public void onCreate() {
    fileObserver = new FileObserver("path") {
        @Override
        public void onEvent(int event, String path) {
            if (event == FileObserver.CREATE) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(FileWatcher.this, "File created", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    };
    fileObserver.startWatching();

我刚刚添加了修改,但它仍然没有响应。您是否使用调试器验证它是否至少正在输入方法?请查看上面编辑的“更新版本”部分。