0
イメージをサーバーに送信するインテントサービスを作成します。 onDestroyの1つのアクティビティ(onResume内)でサービスを開始しますが、サービスを停止します。これはちょうどこのように動作するはずです。私は写真を撮って、写真のパスを持つArrayListを持っています。そしてサービスで私は写真を送る。私は1枚の写真を送りたいと思っています。私は送っています。私は写真を撮るときに(私は2枚の写真を送っている)確認し、意図に戻る(そしてサービスを開始する)、私は黒い叫び声を見る。Javaアンドロイドインテントサービス
サービス:
public class Sendrer extends Service {
public static boolean running = false;
private Timer timer = new Timer();
private SendPhotoTask asyncSender;
@Override
public void onCreate() {
super.onCreate();
Log.e("tworzenie serwisu ", "tworzenie");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("Dziełanie serwisu ", "Dziełanie");
while (! ConfirmDetailsPGOActivity.myList.isEmpty()) {
if(!running) {
asyncSender = new SendPhotoTask();
asyncSender.execute();
}
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
if (running) {
timer.cancel();
asyncSender.cancel(true);
running = false;
}
// asyncSender.cancel(true);
Log.e("service " , "nie działa");
super.onDestroy();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
class SendPhotoTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... strings) {
running = true;
InputStream responseInputStream = null;
try {
responseInputStream = HttpConnectionsUtil.sendPhotoRequest(getApplicationContext(), true, ConfirmDetailsPGOActivity.myList.get(0));
} catch (IOException e) {
e.printStackTrace();
}
Log.e("Wysyłanie zdjęcia ", convertStreamToString(responseInputStream));
return convertStreamToString(responseInputStream);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
ConfirmDetailsPGOActivity.myList.remove(0);
}
}
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}
そして活動で、私はこの持っている:
@Override
protected void onDestroy() {
super.onDestroy();
stopService();
}
@Override
protected void onResume() {
super.onResume();
startService();
}
private void stopService(){
stopService(myIntent);
}
private void startService(){
myIntent = new Intent(RouteDetailsActivity.this, Sendrer.class);
startService(myIntent);
}
ログの出力または何かを追加する – Maxouille