I need to subscribe to INotifyPropertyChanged of one of my models in my ViewModel. My research led me to: How do I update the parent viewmodel when child viewmodel is updated.
I tried using WeakSubscribe as suggested in #3 but after entering and leaving the view several times my whole application either freezes or crashes.
Here's my code from Init() in the ViewModel:
foreach (var sale in Model.Sales)
{
sale.WeakSubscribe(delegate
{
Model.CalculateSalesTotals();
});
}
when the app is crashing, I'm getting SIGSEGV:
I/mono-stdout(30334): mvx:Diagnostic:227.00 Showing ViewModel InvoiceAuthorizationViewModel
I/ActivityManager( 391): START u0 {flg=0x10000000 cmp=com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView (has extras)} from pid 30334
I/mono-stdout(30334): mvx:Diagnostic:227.19 Loading new ViewModel from Intent with Extras
D/dalvikvm(30334): GC_EXPLICIT freed 783K, 5% free 17252K/18068K, paused 2ms+8ms, total 53ms
I/mono-stdout(30334): MvxBind:Warning:227.59 Unable to bind: source property source not found Cirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPr
opertyNamePropertyToken on null-object
I/mono-stdout(30334): MvxBind:Warning:227.61 Unable to bind: source property source not found Cirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPr
opertyNamePropertyToken on null-object
I/mono-stdout(30334): MvxBind:Warning:227.63 Unable to bind: source property source not found Cirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPr
opertyNamePropertyToken on null-object
I/dalvikvm(30334): Jit: resizing JitTable from 4096 to 8192
I/ActivityManager( 391): Displayed com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView: +755ms (total +1s259ms)
I/ActivityManager( 391): Displayed com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView: +1s279ms
I/ActivityManager( 391): Process com.android.vending (pid 30179) has died.
E/mono-rt (30334): Stacktrace:
E/mono-rt (30334):
E/mono-rt (30334):
E/mono-rt (30334): =================================================================
E/mono-rt (30334): Got a SIGSEGV while executing native code. This usually indicates
E/mono-rt (30334): a fatal error in the mono runtime or one of the native libraries
E/mono-rt (30334): used by your application.
E/mono-rt (30334): =================================================================
E/mono-rt (30334):
I/ActivityManager( 391): Process com.desco.escMobile (pid 30334) has died.
I/WindowState( 391): WIN DEATH: Window{42cf2e60 u0 com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView}
W/ActivityManager( 391): Force removing ActivityRecord{42e05b20 u0 com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView}: app died, no saved st
ate
I/WindowState( 391): WIN DEATH: Window{427bfbf0 u0 com.desco.escMobile/escmobile.android.views.DispatchListView}
I/WindowState( 391): WIN DEATH: Window{42b32b50 u0 com.desco.escMobile/escmobile.android.views.InvoiceDetailsView}
I/WindowState( 391): WIN DEATH: Window{43003e48 u0 com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView}
I/WindowState( 391): WIN DEATH: Window{42aea920 u0 com.desco.escMobile/escmobile.android.views.DispatchDetailsView}
D/dalvikvm(30434): Late-enabling CheckJNI
I/ActivityManager( 391): Start proc com.desco.escMobile for activity com.desco.escMobile/escmobile.android.views.InvoiceAuthorizationView: pid=30434 uid=10086
gids={50086, 3003, 1015, 1028}
D/Zygote ( 129): Process 30334 exited cleanly (255)
Any suggestions?
Related
We're working on an Android game, developing with Cocos2d-x.
Our game seems to be killed by android, but we can't find the root cause about the game close. The adb's log is dumped as follows:
adb's log
Critical portion:
D/dalvikvm( 501): GC_CONCURRENT freed 875K, 19% free 4478K/5464K, paused 2ms+2ms, total 22ms
E/Surface ( 965): queueBuffer: error queuing buffer to SurfaceTexture, -12
W/dalvikvm( 965): trying to work around app JNI bugs, but didn't find 0x41906cd8 in table!
W/dalvikvm( 965): JNI WARNING: DeleteLocalRef(0x41906cd8) failed to find entry
I/FrameQueueManage( 174): FrameQueueManage::~FrameQueueManage end!
D/Zygote ( 172): Process 965 terminated by signal (11)
I/ActivityManager( 501): Process igs.rd5.SuperSoccer (pid 965) has died.
I/WindowState( 501): WIN DEATH: Window{41a365d8 u0 igs.rd5.SuperSoccer/org.cocos2dx.cpp.AppActivity}
W/WindowManager( 501): Force-removing child win Window{41a4fcb0 u0 SurfaceView} from container Window{41a365d8 u0 igs.rd5.SuperSoccer/org.cocos2dx.cpp.AppActivity}
W/ActivityManager( 501): Force removing ActivityRecord{41975d20 u0 igs.rd5.SuperSoccer/org.cocos2dx.cpp.AppActivity t2}: app died, no saved state
W/WindowManager( 501): Failed looking up window
W/WindowManager( 501): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy#41a4be58 does not exist
W/WindowManager( 501): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8102)
W/WindowManager( 501): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8093)
W/WindowManager( 501): at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1047)
W/WindowManager( 501): at android.os.BinderProxy.sendDeathNotice(Binder.java:493)
W/WindowManager( 501): at dalvik.system.NativeStart.run(Native Method)
I/WindowState( 501): WIN DEATH: null
D/mali_winsys( 680): new_window_surface returns 0x3000
W/InputMethodManagerService( 501): Got RemoteException sending setActive(false) notification to pid 965 uid 10047
W/Binder ( 652): Caught a RuntimeException from the binder stub implementation.
W/Binder ( 652): java.lang.NullPointerException
W/Binder ( 652): at android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:284)
W/Binder ( 652): at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129)
W/Binder ( 652): at android.os.Binder.execTransact(Binder.java:404)
W/Binder ( 652): at dalvik.system.NativeStart.run(Native Method)
We don't see any native library's crash dump, and nearly can't see any java's exception that has senses. Cound anybody tell us why our game is killed by android?
I have a question: is there somebody that use MVVMCross 3.5.1 with Api level android 21 and xamarin studio 5.9.3? I have a problem: I reference mvvmcross in an android app. I have a splashscreen and a firstview. When I tried to start with emulator I don't have any problem with level 15 emulator but when I tried it with the last version (Api 21) the app after splashscreen is closed without any error (not open the firstview).
Is there a solution?
UPDATE
I tried with logcat. In the following I attached the log:
W/AudioTrack( 394): AUDIO_OUTPUT_FLAG_FAST denied by client
I/ActivityManager( 394): START u0 {act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] flg=0x10000000 cmp=com.nowhere.nowhere/md51f5aeae0dbe3
fa3acab67292d41114d1.SplashScreen (has extras)} from uid 10007 on display 0
I/Choreographer( 824): Skipped 67 frames! The application may be doing too muc
h work on its main thread.
I/art ( 1716): Not late-enabling -Xcheck:jni (already on)
I/ActivityManager( 394): Start proc com.nowhere.nowhere for activity com.nowher
e.nowhere/md51f5aeae0dbe3fa3acab67292d41114d1.SplashScreen: pid=1716 uid=10056 g
ids={50056, 9997, 3003} abi=armeabi-v7a
I/Choreographer( 394): Skipped 32 frames! The application may be doing too muc
h work on its main thread.
F/MonoDroid( 1716): shared runtime initialization error: dlopen failed: library
"/data/app/Mono.Android.DebugRuntime-1/lib/arm/lib/libmonosgen-2.0.so" not found
I/Zygote ( 66): Process 1716 exited cleanly (1)
I/ActivityManager( 394): Process com.nowhere.nowhere (pid 1716) has died
I/art ( 1731): Not late-enabling -Xcheck:jni (already on)
I/ActivityManager( 394): Start proc com.nowhere.nowhere for activity com.nowher
e.nowhere/md51f5aeae0dbe3fa3acab67292d41114d1.SplashScreen: pid=1731 uid=10056 g
ids={50056, 9997, 3003} abi=armeabi-v7a
F/MonoDroid( 1731): shared runtime initialization error: dlopen failed: library
"/data/app/Mono.Android.DebugRuntime-1/lib/arm/lib/libmonosgen-2.0.so" not found
I/Zygote ( 66): Process 1731 exited cleanly (1)
I/ActivityManager( 394): Process com.nowhere.nowhere (pid 1731) has died
I/art ( 1746): Not late-enabling -Xcheck:jni (already on)
I/ActivityManager( 394): Start proc com.nowhere.nowhere for activity com.nowher
e.nowhere/md51f5aeae0dbe3fa3acab67292d41114d1.SplashScreen: pid=1746 uid=10056 g
ids={50056, 9997, 3003} abi=armeabi-v7a
F/MonoDroid( 1746): shared runtime initialization error: dlopen failed: library
"/data/app/Mono.Android.DebugRuntime-1/lib/arm/lib/libmonosgen-2.0.so" not found
I/Zygote ( 66): Process 1746 exited cleanly (1)
I/ActivityManager( 394): Process com.nowhere.nowhere (pid 1746) has died
W/ActivityManager( 394): Force removing ActivityRecord{27f513c9 u0 com.nowhere.
nowhere/md51f5aeae0dbe3fa3acab67292d41114d1.SplashScreen t8}: app died, no saved
state
W/WindowManager( 394): Failed looking up window
W/WindowManager( 394): java.lang.IllegalArgumentException: Requested window and
roid.view.ViewRootImpl$W#3c7a1def does not exist
W/WindowManager( 394): at com.android.server.wm.WindowManagerService.wi
ndowForClientLocked(WindowManagerService.java:8412)
W/WindowManager( 394): at com.android.server.wm.WindowManagerService.wi
ndowForClientLocked(WindowManagerService.java:8403)
W/WindowManager( 394): at com.android.server.wm.WindowManagerService.re
moveWindow(WindowManagerService.java:2558)
W/WindowManager( 394): at com.android.server.wm.Session.remove(Session.
java:186)
W/WindowManager( 394): at android.view.ViewRootImpl.dispatchDetachedFro
mWindow(ViewRootImpl.java:2920)
W/WindowManager( 394): at android.view.ViewRootImpl.doDie(ViewRootImpl.
java:5390)
W/WindowManager( 394): at android.view.ViewRootImpl$ViewRootHandler.han
dleMessage(ViewRootImpl.java:3223)
W/WindowManager( 394): at android.os.Handler.dispatchMessage(Handler.ja
va:102)
W/WindowManager( 394): at android.os.Looper.loop(Looper.java:135)
W/WindowManager( 394): at android.os.HandlerThread.run(HandlerThread.ja
va:61)
W/WindowManager( 394): at com.android.server.ServiceThread.run(ServiceT
hread.java:46)
W/InputMethodManagerService( 394): Window already focused, ignoring focus gain
of: com.android.internal.view.IInputMethodClient$Stub$Proxy#14f4aa0b attribute=n
ull, token = android.os.BinderProxy#5c9e508
I/Choreographer( 824): Skipped 56 frames! The application may be doing too muc
h work on its main thread.
D/TaskPersister( 394): removeObsoleteFile: deleting file=8_task.xml
UPDATE 2
The bind does not work. Inside the view..
UPDATE 3
I put the code in this repo:
https://onedrive.live.com/redir?resid=1E563B1D1AD8A1C!15847&authkey=!AII01sfuzToQiUQ&ithint=file%2czip
I used this configuration for the test:
1. Nexus 5,
2. Android 5.0-API Level 21,
3. CPU/ABI, I have chosen Google APIs Intel Atom(x86_64),
4. Use Host GPU.
UPDATE 4
new link for code: http://1drv.ms/1MZWf45
Thanks
Alessandro
I found the problem. The problem was the emulator. I tried to change the configuration and now run without problem.
Thanks
Al.
In my application i try launching the browser with the following url:
https://maps.google.com/maps?saddr=indiranagar bangalore&daddr=mgroad bangalore
The browser launches and when the map loads my application gets killed with the following logcat message:
I/ActivityManager( 61): Starting: Intent { act=android.intent.action.VIEW dat=
http://View cmp=com.android.browser/.BrowserActivity (has extras) } from pid 355
I/ActivityManager( 61): Starting: Intent { act=android.intent.action.VIEW dat=
https://maps.google.com/maps?saddr=indiranagar bangalore&daddr=mgroad bangalore
cmp=com.android.browser/.BrowserActivity } from pid 355
D/PhoneWindow( 355): couldn't save which view has focus because the focused vie
w android.widget.EditText#40587640 has no id.
I/ActivityManager( 61): Displayed com.android.browser/.BrowserActivity: +760ms
W/IInputConnectionWrapper( 355): showStatusIcon on inactive InputConnection
I/dalvikvm( 373): Jit: resizing JitTable from 1024 to 2048
I/System.out( 355): Logout Counter:30
D/dalvikvm( 373): GC_CONCURRENT freed 369K, 50% free 3921K/7751K, external 2234
K/2645K, paused 5ms+18ms
D/dalvikvm( 355): GC_EXPLICIT freed 866K, 50% free 3666K/7239K, external 2693K/
3310K, paused 1640ms
D/dalvikvm( 373): GC_CONCURRENT freed 1400K, 54% free 3641K/7751K, external 226
6K/2645K, paused 6ms+26ms
W/browser ( 373): We should not show context menu when nothing is touched
W/browser ( 373): We should not show context menu when nothing is touched
W/browser ( 373): We should not show context menu when nothing is touched
**I/ActivityManager( 61): Process com.aavarp.mobile (pid 355) has died.
I/ActivityManager( 61): Low Memory: No more background processes.**
I/WindowManager( 61): WIN DEATH: Window{408793c0 com.aavarp.mobile/com.aavarp.
mobile.core.ui.ApplicationsActivity paused=false}
E/InputDispatcher( 61): channel '4070e4f8 com.aavarp.mobile/com.aavarp.mobile.
dashboard.ui.components.GraphActivity (server)' ~ Consumer closed input channel
or an error occurred. events=0x8
E/InputDispatcher( 61): channel '4070e4f8 com.aavarp.mobile/com.aavarp.mobile.
dashboard.ui.components.GraphActivity (server)' ~ Channel is unrecoverably broke
n and will be disposed!
I/WindowManager( 61): WIN DEATH: Window{4070e4f8 com.aavarp.mobile/com.aavarp.
mobile.dashboard.ui.components.GraphActivity paused=false}
I/WindowManager( 61): WIN DEATH: Window{406836a8 com.aavarp.mobile/com.aavarp.
mobile.dashboard.ui.components.NotificationList paused=false}
I/WindowManager( 61): WIN DEATH: Window{406825a8 com.aavarp.mobile/com.aavarp.
mobile.dashboard.ui.components.TableListActivity paused=false}
I/WindowManager( 61): WIN DEATH: Window{4083df30 com.aavarp.mobile/com.aavarp.
mobile.dashboard.ui.components.DetailsActivity paused=false}
E/InputDispatcher( 61): Received spurious receive callback for unknown input c
hannel. fd=171, events=0x8
E/InputDispatcher( 61): Received spurious receive callback for unknown input c
hannel. fd=175, events=0x8
E/InputDispatcher( 61): Received spurious receive callback for unknown input c
hannel. fd=181, events=0x8
D/dalvikvm( 61): GC_CONCURRENT freed 1735K, 52% free 4435K/9159K, external 529
2K/6609K, paused 8ms+16ms
D/skia ( 129): purging 38K from font cache [5 entries]
D/dalvikvm( 129): GC_EXPLICIT freed 84K, 52% free 2801K/5767K, external 2117K/2
643K, paused 73ms
Again i tried launching the browser from my application with www.google.com and performed a search and browsed through various pages and navigated back to my application without any issues. I am not sure if am missing some message on the logcat. I use Android 2.3 OS.Could someone kindly help me resolve this issue please. Thanks in advance.
why do you want to load the maps in webview..? you load the map in a map activity or
use Intents List: Invoking Google Applications on Android Devices
String uri = "http://maps.google.com/maps?saddr=" + "9982878"+","+"76285774"+"&daddr="+"9992084"+","+"76286455";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
Note: for displaying route you should use map activity canvas
In my app i am downloading images from the web. Sometimes i am getting the following error in stack trace and then app crashed. What is meaning of the "process has died"? How to handle this?
ERROR
09-06 11:03:46.127 I/ActivityManager( 98): Process com.ibkr.elgifto (pid 7684) has died.
09-06 11:03:46.157 I/WindowManager( 98): WIN DEATH: Window{44b0e778 com.ibkr.elgifto/com.ibkr.elgifto.ElgiftoSplash paused=false}
09-06 11:03:46.167 I/WindowManager( 98): WIN DEATH: Window{44b4e400 com.ibkr.elgifto/com.ibkr.elgifto.Ehome paused=false}
09-06 11:03:46.207 I/ActivityManager( 98): Start proc com.ibkr.elgifto for activity com.ibkr.elgifto/.ElgiftoSplash: pid=8011 uid=10060 gids={3003, 1015}
09-06 11:03:46.487 I/UsageStats( 98): Unexpected resume of com.ibkr.elgifto while already resumed in com.ibkr.elgifto
09-06 11:04:16.687 W/InputManagerService( 98): Got RemoteException sending 'screen on/off' notification to pid 7684 uid 10060
By the stack trace I underatand that your app is resumed while its already running. Wich causes your process to be killed and start again.
Check to see if you are downloading the image on the main thread. If u do that might be the problem.
The way you handle this through handlers and background service and different threads.
Make sure that you dont do any network operations in UI thread
The spinning globe application unning on the emulator works on android 1.5 as target but puts out a "force close application" error in android 2.2 target. Where should i look to find the problem ?
I have enclosed the logcat details that I get,
D/MediaScanner( 183): prescan time: 4913ms
D/MediaScanner( 183): scan time: 693ms
D/MediaScanner( 183): postscan time: 45ms
D/MediaScanner( 183): total time: 5651ms
D/MediaScannerService( 183): done scanning volume internal
I/PackageManager( 67): Removing non-system package:com.android.SpinningGlobe
I/ActivityManager( 67): Force stopping package com.android.SpinningGlobe uid=10038
D/dalvikvm( 127): GC_EXPLICIT freed 12963 objects / 655936 bytes in 168ms
D/PackageManager( 67): Scanning package com.android.SpinningGlobe
I/PackageManager( 67): Package com.android.SpinningGlobe codePath changed from /data/app/com.android.SpinningGlobe-2.apk to /data/app/com.android.SpinningGlobe-1.apk; Retaining data and using new
I/PackageManager( 67): /data/app/com.android.SpinningGlobe-1.apk changed; unpacking
D/installd( 34): DexInv: --- BEGIN '/data/app/com.android.SpinningGlobe-1.apk' ---
D/dalvikvm( 255): DexOpt: load 214ms, verify 229ms, opt 5ms
D/installd( 34): DexInv: --- END '/data/app/com.android.SpinningGlobe-1.apk' success)---
W/PackageManager( 67): Code path for pkg : com.android.SpinningGlobe changing from /data/app/com.android.SpinningGlobe-2.apk to /data/app/com.android.SpinningGlobe-1.apk
W/PackageManager( 67): Resource path for pkg : com.android.SpinningGlobe changing from /data/app/com.android.SpinningGlobe-2.apk to /data/app/com.android.SpinningGlobe-1.apk
I/ActivityManager( 67): Force stopping package com.android.SpinningGlobe uid=10038
D/PackageManager( 67): Activities: com.android.SpinningGlobe.GLApp
I/installd( 34): move /data/dalvik-cache/data#app#com.android.SpinningGlobe-1.apk#classes.dex -> /data/dalvik-cache/data#app#com.android.SpinningGlobe-1.apk#classes.dex
D/PackageManager( 67): New package installed in /data/app/com.android.SpinningGlobe-1.apk
I/ActivityManager( 67): Force stopping package com.android.SpinningGlobe uid=10038
I/ActivityManager( 67): Start proc com.svox.pico for broadcast com.svox.pico/.VoiceDataInstallerReceiver: pid=256 uid=10028 gids={}
D/dalvikvm( 167): GC_EXPLICIT freed 3943 objects / 244424 bytes in 1708ms
D/dalvikvm( 67): GC_EXPLICIT freed 7297 objects / 468432 bytes in 667ms
W/RecognitionManagerService( 67): no available voice recognition services found
I/ActivityThread( 256): Publishing provider com.svox.pico.providers.SettingsProvider: com.svox.pico.providers.SettingsProvider
I/installd( 34): unlink /data/dalvik-cache/data#app#com.android.SpinningGlobe-2.apk#classes.dex
D/AndroidRuntime( 118): Shutting down VM
D/jdwp ( 118): adbd disconnected
I/AndroidRuntime( 118): NOTE: attach of thread 'Binder Thread #3' failed
D/AndroidRuntime( 266):
D/AndroidRuntime( 266): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 266): CheckJNI is ON
D/AndroidRuntime( 266): --- registering native functions ---
I/ActivityManager( 67): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.android.SpinningGlobe/.GLApp }
D/AndroidRuntime( 266): Shutting down VM
D/jdwp ( 266): adbd disconnected
I/AndroidRuntime( 266): NOTE: attach of thread 'Binder Thread #3' failed
I/ActivityManager( 67): Start proc com.android.SpinningGlobe for activity com.android.SpinningGlobe/.GLApp: pid=273 uid=10038 gids={1015}
I/ARMAssembler( 67): generated scanline__00000077:03545404_00000004_00000000 [ 47 ipp] (67 ins) at [0x32b4a0:0x32b5ac] in 3627836 ns
D/libEGL ( 273): egl.cfg not found, using default config
D/libEGL ( 273): loaded /system/lib/egl/libGLES_android.so
D/dalvikvm( 273): GC_EXTERNAL_ALLOC freed 839 objects / 59328 bytes in 151ms
W/dalvikvm( 273): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
I/ActivityManager( 67): Displayed activity com.android.SpinningGlobe/.GLApp: 4870 ms (total 4870 ms)
E/AndroidRuntime( 273): FATAL EXCEPTION: GLThread 8
E/AndroidRuntime( 273): java.lang.IndexOutOfBoundsException
E/AndroidRuntime( 273): at java.nio.IntArrayBuffer.get(IntArrayBuffer.java:63)
E/AndroidRuntime( 273): at com.android.SpinningGlobe.GLRenderer.onDrawFrame(GLRenderer.java:105)
E/AndroidRuntime( 273): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332)
E/AndroidRuntime( 273): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
W/ActivityManager( 67): Force finishing activity com.android.SpinningGlobe/.GLApp
I/ARMAssembler( 67): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x33f9a8:0x33fa64] in 1258819 ns
Any insights on where the problem could be ?
You should look at the log from the emulator.
You can get this on the command line using:
adb logcat
Or if you're using the ADT Plugin for Eclipse the log is visible there. If you can't see it select Window ▶ Show View ▶ Other... and then select Android ▶ LogCat.
It's probably also worth reading the Debugging page in the Android Developer Documentation.
Recompile it under 2.2 and look for deprecated warnings