2017-04-10 144 views
-2

我有1个应用程序自定义类MyApplication.java和1活动MainActivity.javaMyApplication.java没有在第二次启动应用程序时运行?

在我第一次启动应用程序时,类MyApplication.java正常运行。然后我通过完成活动退出应用程序

MainActivity.this.finish(); 

然后,我单击屏幕中的应用程序图标以再次启动它。但这一次,MyApplication.java不运行。这意味着我无法通过完成所有活动退出应用程序?

我无法解释为什么。

P/S:这里是我的代码

MyApplication.java

@Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.d(TAG, "onCreate: "); 
    } 

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Log.d(TAG, "onCreate: "); 
} 

@Override 
public void onBackPressed() { 
    this.finish(); 
} 
+0

发布您的MainActivity代码 – AlexTa

+0

张贴您的'MyApplication.java'代码 –

+0

@AlexTa&AMAN SINGH:我只登录他们的方法onCreate(),并且日志不会被打印! –

回答

0

在应用程序类中,仅当退出应用程序时过程结束时才会调用onCreate()方法。通常,当系统需要内存时,或者如果使用后退按钮而不是主页按钮退出应用程序,则会停止该进程。但是,你不能依靠它被终止。

如果您真的想在退出应用程序时终止进程,则可以在用户按第一个活动的后退键时拨打System.exit(0);

@Override 
public void onBackPressed() { 
    MainActivity.this.finish();   
    android.os.Process.killProcess(android.os.Process.myPid()); 
    System.exit(0); 
    getParent().finish(); 
} 

注意:这是绝对不推荐的,因为它意味着与Android操作系统的工作方式对抗,并可能导致问题。

+0

我在MainActivity.this.finish()之后使用了System.exit(0),但是应用程序在我按下后退按钮后立即重新启动! –

+0

尝试在第一个/主要活动的'onDestroy()'方法中移动'System.exit(0);'。 –

+0

@Priank Patel:它仍然不工作:(我已经把它放在'onDestroy()',但我的应用程序仍然自动启动后按下按钮! –

0

这是因为该行 MainActivity.this.finish();

只会关闭该活动,但应用程序仍在运行,因为您没有完全关闭该应用程序的权限,并且证明您在单击运行的按钮后尝试查看您的后台应用程序设备,你将看到你的应用程序最后,应用程序类运行,一旦应用程序启动并相处,直到手动关闭设备应用程序堆栈的应用程序。

+0

我如何关闭应用程序?我在MainActivity.this.finish()之后使用了android.os.Process.killProcess(android.os.Process.myPid()),但是只要按下后退按钮,应用程序就会重新启动! –

+0

根据我的搜索,这不是不幸的事情,但如果您可以确保您的应用程序只有单一进程,那么您的解决方案将可以正常工作,但唯一能够将资源和进程设置为应用程序的人员是系统本身并区分从一个到另一个 – mhemdan

相关问题