Androidでファイルオブザーバーを利用するアプリを書いています。とにかくファイルが変更された場合(作成など)、アップロードする必要があります。キューを実装し、スレッドなどを使用してメモリ不足にならないようにするために、IntentService を使用してファイルを 1 つずつアップロードし、失敗したときに実行しないようにして、ユーザーが接続を回復したときにそれを実行したいと考えています。アップロードします。しかし、ここに問題があります:
Intent に指定されたすべてのコンストラクター...
Intent();
Intent(Intent );
Intent(String );
Intent(Context, Class<?>); //The one I always use
Intent(String, Uri );
Intent(String, Uri, Context, Class<?> );
...動作しません。私は FileObserver の拡張機能で作業しているため、Intent をフィードできる受け入れ可能なコンテキストがありません。IntentService を開始するために String のみを使用できる方法はありますか? 何も返す必要はありません。機能させるには、いくつかの文字列(ファイル名など)を入力するだけです。または、IntentServiceを開始できる別の方法があります。これは本当に私を困惑させました。
高度な助けをありがとう!
編集:わかりました。私は多くのコンテキストを試しましたが、どれもうまくいきません。インテント サービスは、呼び出されたときにコンストラクターを介して渡されるサービス クラスのアプリケーションまたは基本コンテキストによって起動されていません。私のアプリの基本的なレイアウトは次のとおりです。
ログイン アクティビティはメニュー アクティビティに移動し、メニュー アクティビティはサービスを開始し、サービスはサービス ハンドラーを開始します (それが何であるかを確認するには、Android ドキュメントのサービスの例を参照してください)、コンストラクターを介してコンテキストを渡します。サービス ハンドラーは FileSync を開始し、コンストラクターを介してコンテキストを渡します。FileSync は、クラス変数でコンテキストを保持します。次に、FileSync はファイルが変更されるまで待機し、コンテキストを使用して IntentService を開始し、Intent を通じて要求されたファイルをアップロードします。とても複雑なことは承知していますが、現時点ではこれしか方法がありません。