Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用';服务';在internet浏览器应用程序中_Java_Android - Fatal编程技术网

Java 如何使用';服务';在internet浏览器应用程序中

Java 如何使用';服务';在internet浏览器应用程序中,java,android,Java,Android,我是新手,所以请原谅我所做的任何错误,或者如果我以错误的方式提问 我最近在android studio上创建了一个简单的媒体播放器,当我关闭应用程序时,我使用Java服务来播放媒体,效果很好。现在,我已经使用WebView创建了一个简单的web浏览器应用程序,我想使用相同的“Java服务”来保持web浏览器应用程序运行,即使它被最小化,但我不知道如何将媒体播放器代码转换为在web浏览器应用程序上使用。我做了很多研究,似乎没有人想创建一个在后台运行的浏览器。你能帮我解决这个问题吗 因为我是Java

我是新手,所以请原谅我所做的任何错误,或者如果我以错误的方式提问

我最近在android studio上创建了一个简单的媒体播放器,当我关闭应用程序时,我使用Java服务来播放媒体,效果很好。现在,我已经使用
WebView
创建了一个简单的web浏览器应用程序,我想使用相同的“Java服务”来保持web浏览器应用程序运行,即使它被最小化,但我不知道如何将媒体播放器代码转换为在web浏览器应用程序上使用。我做了很多研究,似乎没有人想创建一个在后台运行的浏览器。你能帮我解决这个问题吗

因为我是Java新手,所以很难尝试将代码从媒体播放器转换到web浏览器

下面是我的媒体播放器代码:

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button start, stop;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start = (Button) findViewById(R.id.buttonStartService);
        stop = (Button) findViewById(R.id.buttonStopService);


        start.setOnClickListener(this);
        stop.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        if (view == start){
            startService(new Intent(this, MyService.class));
        }else if(view == stop){
            stopService(new Intent(this, MyService.class));
        }
    }
}
MyService.java

public class MyService extends Service {

    private MediaPlayer player;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
        player.setLooping(true);
        player.start();

        return START_STICKY;

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        player.stop();
    }
}
以下是我创建的Webbrowser的主要活动:

public class MainActivity extends AppCompatActivity {

    WebView browser;
    EditText link;
    Button btn_visit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        browser = (WebView) findViewById(R.id.webview);
        link = (EditText) findViewById(R.id.editTextLink);
        btn_visit = (Button) findViewById(R.id.btn_view);

        browser.setWebViewClient(new myWebViewClient());

        btn_visit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String url = link.getText().toString();
                browser.getSettings().setLoadsImagesAutomatically(true);
                browser.getSettings().setJavaScriptEnabled(true);

                browser.loadUrl(url);
            }
        });
    }

    private class myWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}

```

So now I need to create another MyService that will allow the webbrowser to run in the 
background but dont know how to go about it: 
```


public class MyService extends Service {



    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {


    }

    @Override
    public void onDestroy() {

    }
}

正如我所说,我在media player应用程序上没有遇到任何错误。我只想在互联网浏览器应用程序上使用相同的代码,但不知道如何转换它。

在Android中最小化时,服务无法保持活动的运行。Android可以随时为获取资源而杀死任何不在前台的活动。有一种机制(onSaveInstanceState/onRestoreInstanceState)让您有机会保存任何重要数据,以防您的活动恢复到前台。用它来恢复你的状态。谢谢你的回复。我希望浏览器在后台持续运行的原因之一是,如果用户在浏览器中播放我的视频或歌曲,我希望他们能够在最小化浏览器的同时继续听到。安卓系统不可能做到这一点吗?它是通过网络浏览器实现的,这让它很难实现——如果它是本地的,你可以使用它。但是,没有办法强迫一项活动保持活力,而且视图需要由该活动拥有好吧,我明白了,谢谢你的帮助和建议,盖布。非常感谢。