我们如何知道Android应用程序已关闭?

问题描述:

我正在开发一个Android应用程序,用于从中下载.mp3文件 服务器.下载完成后,文件将存储在 差异扩展(.srt).当用户点击播放时 按钮,文件的扩展名将被更改回.mp3并播放 当用户退出应用程序时,文件将返回到 (.srt)格式.

I am developing an Android Application to download an .mp3 file from server. When downloading is finished the file will be stored in a DIFFRENT EXTENSION (.srt) . and when the user clicked on the play button the file's EXTENSION will be changed back into .mp3 and play And when the user exit's the Application the file will go back to the (.srt) format.

一切正常.但是现在,如果用户在不按BackKey的情况下关闭应用程序,扩展名将相同.

Everything works Fine . But now if the user close the application without pressing BackKey the extension will be the same.

我的代码是

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();

    }

如果用户未通过正确的方式退出,则退出按钮内的功能无法正常工作.

if the user not Exiting through the proper way the function inside the exit button not works.

从Android Studio File-> New-> Service-> Service创建新服务 然后像这样覆盖onStartCommand方法

Create a new service from Android Studio File->New ->Service ->Service then override the onStartCommand method like this

@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方法启动它

then you can start it from onstop method of your activity by this

protected void onStop(){
super.onStop();
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);
}

或者您可以像这样在onStop方法中做同样的事情

or you can do the same in onStop method like this

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);
 }