标签: android-ondestroy

防止活动被破坏

我从一个我称之为活动的活动中向相机发送了一个意图:

 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

13
推荐指数
2
解决办法
1万
查看次数

在Android OS销毁服务时删除通知

我创建了一个应用程序,它在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时如何删除通知?

service android android-ondestroy

8
推荐指数
1
解决办法
2969
查看次数

onDestroy 后重新创建 android Fragment - FragmentManagerState ClassNotFound

我正在使用带有 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

6
推荐指数
0
解决办法
483
查看次数

当应用程序在后台运行时,Android 可以在不终止整个进程的情况下终止 Activity 吗?

我想知道当应用程序最小化时,Android 系统是否能够在没有整个应用程序进程的情况下终止该活动。从Android文档中我们知道,onDestroy只有当activity即将被销毁时才会被调用,并且系统保证在将要杀死activity时调用此方法,只有在整个应用程序进程被杀死时才不会被调用。

因此,想象这样一种情况 - 您将应用程序发送到后台(最小化),一段时间后操作系统开始内存不足并决定终止该活动,但由于应用程序当前已挂起并且无法执行代码,因此它不是能够调用它的onDestroy方法,尽管保证它会在每个活动销毁之前被调用。

因此,这种推理让我想到,当应用程序处于后台时,操作系统只能杀死整个进程,而不能杀死某些特定活动。我的推理正确吗,还是我错过了什么?

android android-lifecycle android-activity android-memory android-ondestroy

6
推荐指数
1
解决办法
2680
查看次数

关闭应用程序时仍会出现通知

我试图在我的应用程序关闭时关闭通知,因为当我从(最近的任务/滑动退出)关闭应用程序时,通知仍然出现,如果用户尝试单击通知,应用程序将崩溃。

 @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()不是每次都调用。

java notifications android android-ondestroy

4
推荐指数
1
解决办法
1899
查看次数

SharedPreferences未保存在onDestroy of Service中

在活动被杀之前(OnDestroy被叫时),我保存了一些intSharedPreferences.

但我注意到的是,要保存的值需要大约一秒钟,但应用程序在销毁之前不会等待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

3
推荐指数
1
解决办法
3801
查看次数

应用程序终止时删除首选项数据

在我的应用程序中,我存储了一些 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()方法没有调用。

谢谢。

android sharedpreferences ondestroy android-ondestroy

2
推荐指数
1
解决办法
921
查看次数