<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned in ArcGIS Runtime SDK for Android Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/com-esri-arcgisruntime-arcgisruntimeexception/m-p/1196261#M5811</link>
    <description>&lt;P&gt;Version :&amp;nbsp;arcgis-android:100.14.0&lt;/P&gt;&lt;P&gt;I have a switch to load satelite map in my app. It was working fine until some android update.&lt;/P&gt;&lt;P&gt;Now it throws an error and crashes the App. It shows ' com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned.'&lt;/P&gt;&lt;P&gt;I tried clearing the Layers before adding it again. I'm new in this space. kindly go through my code and see if I could do it in a better way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="java"&gt;  --------- beginning of crash
2022-07-27 12:34:58.626 19151-19151/com.example.administrator.loccy E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.administrator.loccy, PID: 19151
    com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned.
        at com.esri.arcgisruntime.internal.jni.CoreFeatureLayer.nativeCreateWithFeatureTable(Native Method)
        at com.esri.arcgisruntime.internal.jni.CoreFeatureLayer.&amp;lt;init&amp;gt;(SourceFile:96)
        at com.esri.arcgisruntime.layers.FeatureLayer.a(SourceFile:4)
        at com.esri.arcgisruntime.layers.FeatureLayer.&amp;lt;init&amp;gt;(SourceFile:21)
        at com.dubaipolice.loccy.activities.MainActivity.setupMap(MainActivity.java:470)
        at com.dubaipolice.loccy.activities.MainActivity.switchMap(MainActivity.java:555)
        at com.dubaipolice.loccy.ResourceTypeDialogFragment$1.onClick(ResourceTypeDialogFragment.java:95)
        at android.view.View.performClick(View.java:7792)
        at android.widget.TextView.performClick(TextView.java:16112)
        at android.widget.CompoundButton.performClick(CompoundButton.java:157)
        at android.view.View.performClickInternal(View.java:7769)
        at android.view.View.access$3800(View.java:910)
        at android.view.View$PerformClick.run(View.java:30213)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8663)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="java"&gt;    
final ArcGISMapImageLayer PolyLayer = new ArcGISMapImageLayer("http://XXXXXX");
    ArcGISTiledLayer tiledLayerBaseMap = new ArcGISTiledLayer("http://XXXXXX");

    ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable("http://XXXXXX");
    ServiceFeatureTable resZoneFeatureTable = new ServiceFeatureTable("http://XXXXXX");
    ArcGISMap map = new ArcGISMap();


        public void switchMap() {   //calls on change on switch
        mMapView.getGraphicsOverlays().remove(resGraphicsOverlay);
        mMapView.getGraphicsOverlays().remove(eventGraphicsOverlay);
        map.getOperationalLayers().clear();
        setupMap();
    }


    private void setupMap() {

        if (getBooleanFromSP("satMapON")) {
            Log.i("SAVL","SATMAPON");
            Basemap basemap = new Basemap(PolyLayer);
            map = new ArcGISMap(basemap);
            map.setBasemap(basemap);
            mMapView.getGraphicsOverlays().add(resGraphicsOverlay);
            mMapView.getGraphicsOverlays().add(eventGraphicsOverlay);
            mMapView.setMap(map);
            FeatureLayer featureLayer1 = new FeatureLayer(serviceFeatureTable);
            FeatureLayer resFeatureLayer1 = new FeatureLayer(resZoneFeatureTable);
            SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(252, 255,  164), 1);
            SimpleRenderer simpleRenderer = new SimpleRenderer(lineSymbol);
            resFeatureLayer1.setRenderer(simpleRenderer);
            map.getOperationalLayers().add(featureLayer1);
            map.getOperationalLayers().add(resFeatureLayer1);
            SimpleLineSymbol lineSymbol2 = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(0, 0, 255), 2);
            SimpleRenderer simpleRenderer2 = new SimpleRenderer(lineSymbol2);
            featureLayer1.setRenderer(simpleRenderer2);
            MapViewTouchListener mMapViewTouchListener = new MapViewTouchListener(this, mMapView);
            mMapView.setOnTouchListener(mMapViewTouchListener);
        }
        else if (!getBooleanFromSP("satMapON")) {
            Log.i("SAVL","SATMAPOFF");
            Basemap basemap = new Basemap(tiledLayerBaseMap);
            map = new ArcGISMap(basemap);
            map.setBasemap(basemap);
            mMapView.getGraphicsOverlays().add(resGraphicsOverlay);
            mMapView.getGraphicsOverlays().add(eventGraphicsOverlay);
            mMapView.setMap(map);
            FeatureLayer featureLayer2 = new FeatureLayer(serviceFeatureTable);
            FeatureLayer resFeatureLayer2 = new FeatureLayer(resZoneFeatureTable);
            SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(252, 255,  164), 1);
            SimpleRenderer simpleRenderer = new SimpleRenderer(lineSymbol);
            resFeatureLayer2.setRenderer(simpleRenderer);
            map.getOperationalLayers().add(featureLayer2);
            map.getOperationalLayers().add(resFeatureLayer2);
            SimpleLineSymbol lineSymbol2 = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(0, 0, 255), 2);
            SimpleRenderer simpleRenderer2 = new SimpleRenderer(lineSymbol2);
            featureLayer2.setRenderer(simpleRenderer2);
            MapViewTouchListener mMapViewTouchListener = new MapViewTouchListener(this, mMapView);
            mMapView.setOnTouchListener(mMapViewTouchListener);
        }

    }

&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 27 Jul 2022 09:05:11 GMT</pubDate>
    <dc:creator>MokishLuan</dc:creator>
    <dc:date>2022-07-27T09:05:11Z</dc:date>
    <item>
      <title>com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/com-esri-arcgisruntime-arcgisruntimeexception/m-p/1196261#M5811</link>
      <description>&lt;P&gt;Version :&amp;nbsp;arcgis-android:100.14.0&lt;/P&gt;&lt;P&gt;I have a switch to load satelite map in my app. It was working fine until some android update.&lt;/P&gt;&lt;P&gt;Now it throws an error and crashes the App. It shows ' com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned.'&lt;/P&gt;&lt;P&gt;I tried clearing the Layers before adding it again. I'm new in this space. kindly go through my code and see if I could do it in a better way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="java"&gt;  --------- beginning of crash
2022-07-27 12:34:58.626 19151-19151/com.example.administrator.loccy E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.administrator.loccy, PID: 19151
    com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned.
        at com.esri.arcgisruntime.internal.jni.CoreFeatureLayer.nativeCreateWithFeatureTable(Native Method)
        at com.esri.arcgisruntime.internal.jni.CoreFeatureLayer.&amp;lt;init&amp;gt;(SourceFile:96)
        at com.esri.arcgisruntime.layers.FeatureLayer.a(SourceFile:4)
        at com.esri.arcgisruntime.layers.FeatureLayer.&amp;lt;init&amp;gt;(SourceFile:21)
        at com.dubaipolice.loccy.activities.MainActivity.setupMap(MainActivity.java:470)
        at com.dubaipolice.loccy.activities.MainActivity.switchMap(MainActivity.java:555)
        at com.dubaipolice.loccy.ResourceTypeDialogFragment$1.onClick(ResourceTypeDialogFragment.java:95)
        at android.view.View.performClick(View.java:7792)
        at android.widget.TextView.performClick(TextView.java:16112)
        at android.widget.CompoundButton.performClick(CompoundButton.java:157)
        at android.view.View.performClickInternal(View.java:7769)
        at android.view.View.access$3800(View.java:910)
        at android.view.View$PerformClick.run(View.java:30213)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8663)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="java"&gt;    
final ArcGISMapImageLayer PolyLayer = new ArcGISMapImageLayer("http://XXXXXX");
    ArcGISTiledLayer tiledLayerBaseMap = new ArcGISTiledLayer("http://XXXXXX");

    ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable("http://XXXXXX");
    ServiceFeatureTable resZoneFeatureTable = new ServiceFeatureTable("http://XXXXXX");
    ArcGISMap map = new ArcGISMap();


        public void switchMap() {   //calls on change on switch
        mMapView.getGraphicsOverlays().remove(resGraphicsOverlay);
        mMapView.getGraphicsOverlays().remove(eventGraphicsOverlay);
        map.getOperationalLayers().clear();
        setupMap();
    }


    private void setupMap() {

        if (getBooleanFromSP("satMapON")) {
            Log.i("SAVL","SATMAPON");
            Basemap basemap = new Basemap(PolyLayer);
            map = new ArcGISMap(basemap);
            map.setBasemap(basemap);
            mMapView.getGraphicsOverlays().add(resGraphicsOverlay);
            mMapView.getGraphicsOverlays().add(eventGraphicsOverlay);
            mMapView.setMap(map);
            FeatureLayer featureLayer1 = new FeatureLayer(serviceFeatureTable);
            FeatureLayer resFeatureLayer1 = new FeatureLayer(resZoneFeatureTable);
            SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(252, 255,  164), 1);
            SimpleRenderer simpleRenderer = new SimpleRenderer(lineSymbol);
            resFeatureLayer1.setRenderer(simpleRenderer);
            map.getOperationalLayers().add(featureLayer1);
            map.getOperationalLayers().add(resFeatureLayer1);
            SimpleLineSymbol lineSymbol2 = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(0, 0, 255), 2);
            SimpleRenderer simpleRenderer2 = new SimpleRenderer(lineSymbol2);
            featureLayer1.setRenderer(simpleRenderer2);
            MapViewTouchListener mMapViewTouchListener = new MapViewTouchListener(this, mMapView);
            mMapView.setOnTouchListener(mMapViewTouchListener);
        }
        else if (!getBooleanFromSP("satMapON")) {
            Log.i("SAVL","SATMAPOFF");
            Basemap basemap = new Basemap(tiledLayerBaseMap);
            map = new ArcGISMap(basemap);
            map.setBasemap(basemap);
            mMapView.getGraphicsOverlays().add(resGraphicsOverlay);
            mMapView.getGraphicsOverlays().add(eventGraphicsOverlay);
            mMapView.setMap(map);
            FeatureLayer featureLayer2 = new FeatureLayer(serviceFeatureTable);
            FeatureLayer resFeatureLayer2 = new FeatureLayer(resZoneFeatureTable);
            SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(252, 255,  164), 1);
            SimpleRenderer simpleRenderer = new SimpleRenderer(lineSymbol);
            resFeatureLayer2.setRenderer(simpleRenderer);
            map.getOperationalLayers().add(featureLayer2);
            map.getOperationalLayers().add(resFeatureLayer2);
            SimpleLineSymbol lineSymbol2 = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(0, 0, 255), 2);
            SimpleRenderer simpleRenderer2 = new SimpleRenderer(lineSymbol2);
            featureLayer2.setRenderer(simpleRenderer2);
            MapViewTouchListener mMapViewTouchListener = new MapViewTouchListener(this, mMapView);
            mMapView.setOnTouchListener(mMapViewTouchListener);
        }

    }

&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jul 2022 09:05:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/com-esri-arcgisruntime-arcgisruntimeexception/m-p/1196261#M5811</guid>
      <dc:creator>MokishLuan</dc:creator>
      <dc:date>2022-07-27T09:05:11Z</dc:date>
    </item>
    <item>
      <title>Re: com.esri.arcgisruntime.ArcGISRuntimeException: Object is already owned.: Already owned</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/com-esri-arcgisruntime-arcgisruntimeexception/m-p/1196269#M5812</link>
      <description>&lt;P&gt;Hello &lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/606027"&gt;@MokishLuan&lt;/a&gt;, I believe the problem is that you are re-using the same ServiceFeatureTables to construct different FeatureLayer objects. Try constructing the ServiceFeatureTables inside `setupMap` instead of at the top.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jul 2022 09:17:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/com-esri-arcgisruntime-arcgisruntimeexception/m-p/1196269#M5812</guid>
      <dc:creator>FPearson</dc:creator>
      <dc:date>2022-07-27T09:17:09Z</dc:date>
    </item>
  </channel>
</rss>

