0
我写一个意图服务来发送图像到服务器。我在onDestroy中的一项活动(onResume)中启动一项服务停止服务。这应该就像这样:我拍一张照片,我有一个带有照片路径的ArrayList。在服务中,我发送一张照片。我想发送一张照片,当我发送时,我等待并发送另一张照片。当我拍摄照片,确认(我有2个照片发),并返回意图(和启动服务),我看到一个黑色的screeen。Java的Android的意图服务
服务:
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