I have a CustomApplication extends Application
class, which is registered in AndroidManifest
<application
....
// Please, pay attention that I got this in my Manifest
android:name=".CustomApplication">
And at different part of my application, both some activities and services I do
getApplication()/getApplicationContext()
then cast it to CustomApplication
and it crashes in production on a variety of devices/sdk versions(beginning at android 6) due to a class cast exception. Caused by: java.lang.ClassCastException
Example:
class CustomApplication extends Application{
...
public static CustomApplication with(Context context) {
return (CustomApplication) context.getApplicationContext(); //crashes here
}
}
and service example:
class CustomService extends IntentService{
...
@Override
rotected void onHandleIntent(@Nullable Intent intent) {
CustomApplication app = CustomApplication.from(getApplication());
// tried getApplicationContext() also
}
}
and activity example:
class CustomActivity extends AppCompatActivity{
...
@Override
protected void onCreate(...){
CustomApplication app = CustomApplication.with(this);
}
What I've tried:
- Tried services with different
process=":process"
- Tried deep linking with different
launchModes
- Tried activities with
taskAffinity
- launching from push notifications
- process cleaning with system tray(on device), ps kill int adb shell
nothing helps me to reproduce an issue on emulator
I don't use Instant Run
also (never used it)
Please don't provide me with suggests of using static application context instance