我从一个我称之为活动的活动中向相机发送了一个意图:
Intent testphoto = new Intent(Dashboard.this,CameraHandler.class);
startActivity(testphoto);
Run Code Online (Sandbox Code Playgroud)
在CameraHandler类中,我调用相机:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)
但是在CameraHandlercamerahandler类中调用之前,活动被破坏了.反正有没有阻止这个?
发现答案:我的androidmanifest nohistory = true,这使得操作系统在结果之前破坏了活动.
android android-camera-intent android-activity android-ondestroy
我创建了一个应用程序,它在Service.onStartCommand()执行方法时显示Notification,并在Service.onDestroy()调用时隐藏通知.它适用于正常调用startService()和stopService().
服务代码:
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
super.onCreate();
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
//Some code here
showNotification();
return START_NOT_STICKY;
}
@Override
public void onDestroy()
{
super.onDestroy();
nm.cancel(R.string.service_started);
}
Run Code Online (Sandbox Code Playgroud)
问题:当我的服务被android OS()销毁时(如果onDestroy()没有被调用),则通知不会被删除.那么当Android OS本身销毁Service时如何删除通知?
我正在使用带有 3 个片段的 viewpager 进行活动。
在开始一个选择图像意图 onactivityResult 被调用后,但
启动活动被销毁并再次创建。
(我已经开启不要保留任何活动,开发者设置。)
现在的问题是在创建活动之后,片段也被再次创建(通过日志观察)
重新创建活动后,这会出现在日志中。
E/Parcel: Class not found when unmarshalling: androidx.fragment.app.FragmentManagerState
java.lang.ClassNotFoundException: androidx.fragment.app.FragmentManagerState
Run Code Online (Sandbox Code Playgroud)
onActivity 结果通过Activity>getsViewpager>getsAdapter>getsFragment方法以编程方式转发到片段。
但现在getContext()在片段中返回空值。(这意味着创建了新片段但onactivityResult传递给旧片段?)我期望旧片段应该重新附加或onActivityResult传递给新片段。
我如何区分新/旧活动/片段?如何在重新创建活动后简单地恢复片段?解组错误时找不到 Class 是什么问题。
java android android-fragments android-viewpager android-ondestroy
我想知道当应用程序最小化时,Android 系统是否能够在没有整个应用程序进程的情况下终止该活动。从Android文档中我们知道,onDestroy只有当activity即将被销毁时才会被调用,并且系统保证在将要杀死activity时调用此方法,只有在整个应用程序进程被杀死时才不会被调用。
因此,想象这样一种情况 - 您将应用程序发送到后台(最小化),一段时间后操作系统开始内存不足并决定终止该活动,但由于应用程序当前已挂起并且无法执行代码,因此它不是能够调用它的onDestroy方法,尽管保证它会在每个活动销毁之前被调用。
因此,这种推理让我想到,当应用程序处于后台时,操作系统只能杀死整个进程,而不能杀死某些特定活动。我的推理正确吗,还是我错过了什么?
android android-lifecycle android-activity android-memory android-ondestroy
我试图在我的应用程序关闭时关闭通知,因为当我从(最近的任务/滑动退出)关闭应用程序时,通知仍然出现,如果用户尝试单击通知,应用程序将崩溃。
@Override
protected void onDestroy() {
super.onDestroy();
notification.cancel(1);
try {
MApplication.sBus.unregister(this);
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
inonDestroy()但不起作用,因为onDestroy()不是每次都调用。
在活动被杀之前(OnDestroy被叫时),我保存了一些int值SharedPreferences.
但我注意到的是,要保存的值需要大约一秒钟,但应用程序在销毁之前不会等待Activity.
Wait它可以在被杀之前做些什么吗?
这是我的例子:
@Override
public void onDestroy(){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("finalXPos", finalX);
editor.putInt("finalYPos", finalY);
editor.commit();
super.onDestroy();
removeView();
}
Run Code Online (Sandbox Code Playgroud)
====================== >>编辑<< ======================
我犯了一个错误,并说这是为了一个,Activity但事实并非如此.我正在调用onDestroy一个服务,不幸的是没有onPause办法覆盖那里......
android android-service android-studio android-sharedpreferences android-ondestroy
在我的应用程序中,我存储了一些 SharedPreference 数据。
当应用程序终止时,我必须清除所有存储的数据。
所以,我在我的活动中onDestroy()做了如下:
@Override
protected void onDestroy() {
if(isBackPressed==0){
if(Prefrences.checkPref(MyActivity.this,MAIN_PREF)){
Prefrences.removePref(MyActivity.this,MAIN_PREF);
Prefrences.removePref(MyActivity.this,PREF_1);
Prefrences.removePref(MyActivity.this,PREF_2);
Constant.displayLogE(">>>>>>>>>>","### Prefrence removed ");
}
Constant.displayLogE(">>>>>>>>>>","### Destroy activity ");
}
finish();
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
在这里,我采取了isBackPressed因为,当 onBackPressed 调用它时,它会自动调用 finish() 并调用 onDestroy() 方法。所以,我已经初始化isBackPressed为 1 内部onBackPressed()方法。
没关系,当应用程序将被杀死时,我只需要删除我的偏好数据。但是,问题是当我杀死应用程序时,onDestroy()方法没有调用。
谢谢。