我正在创建一项服务,使用 Google Drive Android API 将文件上传到 Google云端硬盘应用数据文件夹。
我在服务的GoogleApiClient
方法中初始化了onCreate()
。然后,我编写了代码,将文件上传到Google云端硬盘,并在GoogleApiClient'的覆盖onConnected()
方法中上传。
我面临的问题是,当我启动Service
时,会调用onCreate()
方法。在此方法中,初始化GoogleApiClient
对象并调用connect()
函数。之后,在调用onConnect()
之前(成功连接GoogleApiClient
时),日志中会显示以下消息
"不活动,断开与服务的连接"
因此,永远不会调用onConnect()
方法,并且永远不会执行我的文件上传代码。请在下面找到代码段。任何建议都会有所帮助。
public class GDriveFileUploadService extends Service implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
private static final String TAG = GDriveFileUploadService.class.getSimpleName();
GoogleApiClient mGoogleApiClient;
public GDriveFileUploadService() {
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"Initializing GoogleApiClient..");
this.mGoogleApiClient = new GoogleApiClient.Builder(GDriveFileUploadService.this)
.addApi(Auth.GOOGLE_SIGN_IN_API, GoogleSignInOptions.DEFAULT_SIGN_IN)
.build();
this.mGoogleApiClient.connect();
}
@Override
public void onConnected(@Nullable Bundle bundle) {
Log.d(TAG,"GoogleApiClient connected in service");
//Code to upload file to Google Drive
}
//Other functions..
}
答案 0 :(得分:0)
使用此JobService
和
首先,您需要创建一个运行主服务的引导服务
@TargetApi( Build.VERSION_CODES.LOLLIPOP )
public class BootService extends JobService {
@Override
public void onCreate() {
super.onCreate();
new Handler().postDelayed(() -> {
if ( PreferenceManager.getToken(BootService.this) != null && !PreferenceManager.isNeedProvideInfo(this)) {
startService(new Intent(BootService.this, MainService.class));
}
}, 1000);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// service On start
return START_STICKY;
...
}
}
主要服务应该是这种方式
public class MainService extends JobIntentService {