0

who will tell you why when you start a service with HttpURLConnection in an open application, everything works fine, and when you screw up the application, the urlConnection.connect() stops here, and it starts working when you start it again, another moment, did a check for the Internet in the service, There is an open activation, but in a closed one there is not for some reason, I can not figure out the whole Internet, I can understand something in the manifest?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity"
                android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:enabled="true" android:name=".LoadDataService"/>
</application>

Exexute Service

    public class TestActivity extends Fragment {
      public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.activity_monitor, container, false);

        final Button start_monitoring = rootView.findViewById(R.id.start_monitoring);

        final Context context = rootView.getContext().getApplicationContext();
        View.OnClickListener start_monitoring_lsnr = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             Intent intent = new Intent(context, LoadDataService.class);
              context.startService(intent);
            }

        };
return rootView;
     }
}

Service

    public class LoadDataService extends Service
{
    private DatabaseHandler db;
    private static Context cur_context;
    ExecutorService es;

    @Override
    public void onCreate() {
        super.onCreate();
        this.cur_context = getBaseContext();
        db = new DatabaseHandler(cur_context);
        es = Executors.newFixedThreadPool(1);

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        StartService ss = new StartService(intent);
        es.execute(ss);

        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    class StartService implements Runnable{

        Intent intent;

        public StartService(Intent intent) {
            this.intent = intent;
        }

        @Override
        public void run() {

           try {               
                HttpsURLConnection connection = null;
                connection = (HttpsURLConnection) new URL(url).openConnection();
                connection.setRequestMethod("GET");
                connection.setHostnameVerifier(hostnameVerifier);
                connection.connect();
                InputStream inputStream = connection.getInputStream();

InputStream inputStream = connection.getInputStream(); Here the code is stopped when the application is inactive, and when the application is active everything works fine

            } catch (Exception ex) {
                ex.printStackTrace();
            }
    }
 }
}

Logcat

2019-04-02 20:16:50.698 8888-9803/? E/CrashlyticsCore: Error occurred sending report com.crashlytics.android.core.SessionReport@6cab92f
io.fabric.sdk.android.services.network.HttpRequest$HttpRequestException: java.net.SocketTimeoutException: failed to connect to reports.crashlytics.com/54.221.227.86 (port 443) from /10.119.96.97 (port 54463) after 10000ms
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2550)
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2530)
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2516)
    at com.crashlytics.android.core.DefaultCreateReportSpiCall.applyMultipartDataTo(DefaultCreateReportSpiCall.java:89)
    at com.crashlytics.android.core.DefaultCreateReportSpiCall.invoke(DefaultCreateReportSpiCall.java:61)
    at com.crashlytics.android.core.CompositeCreateReportSpiCall.invoke(CompositeCreateReportSpiCall.java:18)
    at com.crashlytics.android.core.ReportUploader.forceUpload(ReportUploader.java:104)
    at com.crashlytics.android.core.ReportUploader$Worker.attemptUploadWithRetry(ReportUploader.java:242)
    at com.crashlytics.android.core.ReportUploader$Worker.onRun(ReportUploader.java:185)
    at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.net.SocketTimeoutException: failed to connect to reports.crashlytics.com/54.221.227.86 (port 443) from /10.119.96.97 (port 54463) after 10000ms
    at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
    at libcore.io.IoBridge.connect(IoBridge.java:130)
    at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
    at java.net.Socket.connect(Socket.java:616)
    at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
    at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
    at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
    at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
    at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
    at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
    at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
    at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(Unknown Source:0)
    at io.fabric.sdk.android.services.network.HttpRequest.openOutput(HttpRequest.java:2454)
    at io.fabric.sdk.android.services.network.HttpRequest.startPart(HttpRequest.java:2467)
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2546)
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2530) 
    at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2516) 
    at com.crashlytics.android.core.DefaultCreateReportSpiCall.applyMultipartDataTo(DefaultCreateReportSpiCall.java:89) 
    at com.crashlytics.android.core.DefaultCreateReportSpiCall.invoke(DefaultCreateReportSpiCall.java:61) 
    at com.crashlytics.android.core.CompositeCreateReportSpiCall.invoke(CompositeCreateReportSpiCall.java:18) 
    at com.crashlytics.android.core.ReportUploader.forceUpload(ReportUploader.java:104) 
    at com.crashlytics.android.core.ReportUploader$Worker.attemptUploadWithRetry(ReportUploader.java:242) 
    at com.crashlytics.android.core.ReportUploader$Worker.onRun(ReportUploader.java:185) 
    at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30) 
    at java.lang.Thread.run(Thread.java:764) 

I tried to do both in this topic - this problem , but it still did not help

Please HELP !

alex
  • 1
  • 3
  • What is the error in your logcat? – nasch Mar 31 '19 at 13:53
  • added logs Logcat – alex Apr 02 '19 at 14:24
  • Is your device running on some kind of restrictive power save mode? It may as well be android which blocks network access when your app is in background – JensV Apr 02 '19 at 14:39
  • Also some devices support restricting specific apps. Those apps can't use internet in the background – JensV Apr 02 '19 at 14:39
  • aaaaaaa it worked, really it was a problem, I turned off the power saving mode and it all worked, who would have thought THANKS GREAT - JensV – alex Apr 02 '19 at 14:48

0 Answers0