我们怎么知道Android应用程序已关闭?

时间:2016-08-20 05:41:16

标签: android android-studio filepath

  

我正在开发一个Android应用程序来下载.mp3文件   服务器。下载完成后,文件将存储在   DIFFRENT EXTENSION(.srt)。当用户点击播放时   按钮文件的EXTENSION将变回.mp3并播放   当用户退出应用程序时,该文件将返回到   (.srt)格式。

一切都很好。但是现在如果用户在没有按BackKey的情况下关闭应用程序,则扩展名将是相同的。

我的代码是

public void onBackPressed() {
        new AlertDialog.Builder(this)
                .setTitle("Really Exit?")
                .setMessage("Are you sure you want to exit?")
                .setNegativeButton(android.R.string.no, null)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface arg0, int arg1) {
                        File file  = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.mp3"); // handler to your ZIP file
                        File file2 = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.srt");
                        // destination dir of your file
                        boolean success = file.renameTo(file2);
                       System.exit(0);

                         }
                }).create().show();

    }

如果用户没有通过正确的方式退出,则退出按钮内的功能不起作用。

3 个答案:

答案 0 :(得分:2)

从Android Studio文件创建新服务 - >新建 - >服务 - >服务 然后像这样重写onStartCommand方法

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
File file  = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.mp3"); // handler to your ZIP file
File file2 = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.srt");
 // destination dir of your file
 boolean success = file.renameTo(file2);
 MyService.this.stopService(intent);
    return super.onStartCommand(intent, flags, startId);
 }

然后你可以通过这个

从活动的onstop方法开始
protected void onStop(){
super.onStop();
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);
}

或者您也可以在onStop方法中执行相同的操作

protected void onStop(){
super.onStop();
File file  = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.mp3"); // handler to your ZIP file
 File file2 = new File(Environment.getExternalStorageDirectory().toString() + "/Jithin's/downloadedfile.srt");
 // destination dir of your file
 boolean success = file.renameTo(file2);
 }

答案 1 :(得分:1)

您需要在此处对Android活动生命周期进行更多研究:https://developer.android.com/training/basics/activity-lifecycle/index.html

Android系统会自动调用某些生命周期方法,例如当用户离开您的应用程序而不按下退出按钮时。您很可能希望在onPause()或onStop()方法中将文件扩展名更改回.srt。

用户返回应用程序后,您可以在onRestart(),onStart()或onResume()方法中恢复扩展名。

希望有帮助(我在网站上的第一个答案)!

答案 2 :(得分:0)

应用程序终止时应调用onDestroy()方法。