gpt4 book ai didi

android - 如何使用服务中的异步任务写入内部存储中的文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:24 27 4
gpt4 key购买 nike

我无法在服务中的异步任务中使用 getFilesDir()。我看到了这个帖子: Android: Writing to a file in AsyncTask它解决了 Activity 中的问题,但我找不到在服务中执行此操作的方法。如何使用服务中的异步任务写入内部存储文件?这是我在异步任务中的代码:

  File file = new File(getFilesDir() + "/IP.txt");

最佳答案

ServiceActivity 都继承自ContextWrapper,所以它有getFilesDir() 方法。将服务实例传递给 AsyncTask 对象将解决它。

类似于:

File file = new File(myContextRef.getFilesDir() + "/IP.txt");

当您创建 AsyncTask 时传递当前服务的引用(我想您正在从服务创建 AsyncTaskObject):

import java.io.File;

import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.IBinder;

public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}

protected void useFileAsyncTask() {
FileWorkerAsyncTask task = new FileWorkerAsyncTask(this);
task.execute();
}

private static class FileWorkerAsyncTask extends AsyncTask<Void, Void, Void> {

private Service myContextRef;

public FileWorkerAsyncTask(Service myContextRef) {
this.myContextRef = myContextRef;
}

@Override
protected Void doInBackground(Void... params) {
File file = new File(myContextRef.getFilesDir() + "/IP.txt");
// use it ...
return null;
}
}
}

关于android - 如何使用服务中的异步任务写入内部存储中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635724/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com