Java 如何使用';服务';在internet浏览器应用程序中
我是新手,所以请原谅我所做的任何错误,或者如果我以错误的方式提问 我最近在android studio上创建了一个简单的媒体播放器,当我关闭应用程序时,我使用Java服务来播放媒体,效果很好。现在,我已经使用Java 如何使用';服务';在internet浏览器应用程序中,java,android,Java,Android,我是新手,所以请原谅我所做的任何错误,或者如果我以错误的方式提问 我最近在android studio上创建了一个简单的媒体播放器,当我关闭应用程序时,我使用Java服务来播放媒体,效果很好。现在,我已经使用WebView创建了一个简单的web浏览器应用程序,我想使用相同的“Java服务”来保持web浏览器应用程序运行,即使它被最小化,但我不知道如何将媒体播放器代码转换为在web浏览器应用程序上使用。我做了很多研究,似乎没有人想创建一个在后台运行的浏览器。你能帮我解决这个问题吗 因为我是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)让您有机会保存任何重要数据,以防您的活动恢复到前台。用它来恢复你的状态。谢谢你的回复。我希望浏览器在后台持续运行的原因之一是,如果用户在浏览器中播放我的视频或歌曲,我希望他们能够在最小化浏览器的同时继续听到。安卓系统不可能做到这一点吗?它是通过网络浏览器实现的,这让它很难实现——如果它是本地的,你可以使用它。但是,没有办法强迫一项活动保持活力,而且视图需要由该活动拥有好吧,我明白了,谢谢你的帮助和建议,盖布。非常感谢。