我正在使用Android工作室编写一个简单的应用程序,它打开主要活动,当我点击按钮时,它会产生新的意图,以便在网络浏览器中启动URL。打开URL的代码是:
String Link=listURL.get((int) id).toString();
Uri uriUrl = Uri.parse(Link);
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
它运行正常,它显示了网页结果,我可以使用后退按钮返回主要活动。一切正常,直到我决定使用闪屏。 实现了一个启动画面后,当我点击web浏览器中的后退按钮时,它将退出应用程序。它不会再出现在" main"活性。
这是我的manifest.xml: 如果我尝试删除.splashscreen节,一切正常。我有启动画面,但一切正常。可能是清单的属性问题吗?
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SplashScreen"
android:theme="@android:style/Theme.Translucent"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MyActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAINACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
这是我的启动画面:
public class SplashScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread timerThread = new Thread(){
public void run(){
try{
sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
Intent intent = new Intent(SplashScreen.this,MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
};
timerThread.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
finish();
}
}
感谢 乔瓦尼
答案 0 :(得分:1)
执行语句后调用finish()导致启动MyActivity
Intent intent = new Intent(SplashScreen.this,MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
避免在onPause()中调用finish()。
答案 1 :(得分:1)
delete finish() from onpause and write your timer code inside onresume it will work
Ex:
onresume()
{
Thread timerThread = new Thread(){
public void run(){
try{
sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
Intent intent = new Intent(SplashScreen.this,MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
};
timerThread.start();
}
答案 2 :(得分:0)
我觉得它适合你
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
意图之后
finish();
答案 3 :(得分:0)
感谢您的建议,但没有解决。 我已经解决了使用另一个新的,而不是预定义的活动,一切正常。
乔瓦尼