android如何中自动跳转activity

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android如何中自动跳转activity相关的知识,希望对你有一定的参考价值。

我的意思是:activity1 十秒不操作,自动跳转到activity2(类似屏保),但是activity1又是个类似菜单的页面。在activity1中跳转到任意activity返回activity1之后依然能完成十秒自动跳转,在线求高手指点!
十秒跳转我已经完成,但是问题有两个:1.从activityN返回acrivity1之后,就不会自动跳转;2.我把跳转代码放到onRestart()里面,从其他activity返回activity1之后确实能跳转,但是BUG也就产生了:activity2会启动两到三次!

android中自动跳转activity的方法为:
1、在onCreate里设置个Timer,然后建立Intent指向要调用Activity。
2、设置Timer 10妙后执行startActivity就行了。
3、示例代码:
final Intent it = new Intent(this, Activity1.class); //你要转向的Activity
Timer timer = new Timer();
TimerTask task = new TimerTask()
@Override
public void run()
startActivity(it); //执行

;
timer.schedule(task, 1000 * 10); //10秒后
4、也可以用线程控制
int _splashTime = 3000;
Thread splashTread = new Thread()
@Override
public void run()
try
int waited = 0;
while(waited < _splashTime)
sleep(100);
waited += 100;

catch(InterruptedException e)
// do nothing
finally
finish();
// 启动主应用
Intent intent = new Intent();
intent.setClass(this, Activity1.class);
startActivity(intent);
stop();


;
splashTread.start();
参考技术A

这个有几个原因可能照成

    横竖屏切换,让你进行了横竖屏切换,只要你不是在Manifest里面设置,在代码中写了固定横屏他进去都会加载两次界面

    多次打开一个界面的话可以给activity2Manifest里面加入android:launchMode="singleTask"这样就不会出现重复界面,就算他跳个几次都只有一个,intent第二个界面的startActivity后面加入overridePendingTransition(0, 0);去掉跳转效果,当然这个是最差的方法

    你在线程里面打印下看是否线程开启了多次,如果是这个原因的话在找到为何线程多次启动,没代码无法帮你找,偷懒的话就在线程里面加个flag,

    if(flag)

        falg = false;

        intent .........

    在onRestart里面把它改会true

追问

线程试过了,没有多次执行

追答

能贴下你activity的代码吗~~??

追问

整个ACTIVITY代码都要?

追答

你为什么在onCreate和onRestart()里面都加入了定时跳转~~??你直接把这两个地方的跳转去了,写在onStart里面

追问

好吧,我按你说的做了,依然是启动2-3次,之前如果只放在onCreate()里面,没有这种现象的

追答

我那个去的,我看出来了
MainActivity.this.startActivity(intent);
startActivity(intent);
为什么你跳转的时候写两遍startActivity

追问

好吧,我也奇怪怎么会出现了两次 - -!
那还有一次就是线程的原因了,如果我点击按钮进入那个页面的话,线程里面的那个时间到了还是会再启动一次activiti2,这个怎么办?这个线程该怎么关呢?

追答

你可以调用
timer.cancel();
task.cancel();
进行你的那个线程关闭,当然要加非空判断,不然容易空指针

追问

求代码…………

追答public class MainActivity extends Activity
    private Timer timer;
    private TimerTask task;

    //意图
private Intent intent;
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //元素初始化
        intent = new Intent();
    
    @Override
    protected void onStart() 
     super.onStart();
     timer = new Timer();
        task = new TimerTask() 
@Override
public void run() 
System.out.println("!!!!!!!!!!!!!!!run1!!!!!!!!!!!!!!!!!!!!!");
intent.setClass(MainActivity.this,ShowActivity.class);
startActivity(intent);

;
timer.schedule(task, 1000 * 5);
    
    
    @Override
    protected void onPause() 
     super.onPause();
     if(null != timer)
     timer.cancel();
     task.cancel();
    
     Toast.makeText(MainActivity.this, "MainActivity以暂停", Toast.LENGTH_LONG).show();
    

我是在onPause里面加的,当你当前页面暂停的时候肯定是干了什么就停止跳转的线程了

追问

牛B,我还以为是加在按钮那里,结果报错了,所以才厚颜的找你要代码 - - !

本回答被提问者采纳
参考技术B 小盆友,在onresume中新开启一个线程,执行Intent跳转就行了,或者在onresume中写一个Handler来实现跳转。这样不行吗?追问

举个例子行吗?
我是初学者,最好能弄点代码来
最好最好是能弄监控屏幕未点击,十秒后跳转页面的代码,跪求~!

追答

Handler handler = new Handler();

handler.postDelay(new Runnable()
public void run()
Intent i = new Intent(Main.this, 下一个类);

Main.this.startActivity(intent);



10000);
上边是我手写的,可能会写错,你改改把上边这个放进onresume中试试,看看行不?
不是我不在自己的eclipse上写,只是还得开模拟器,我电脑有点慢

追问

非常感激您的回答,还是火神答案最适合,抱歉

参考技术C 把跳转代码写在onResume里面追问

结果是一样,只是省了一点代码 …………

追答

activity2跳转到1时先关闭2在跳转

追问

//设置任意键返回主页面

relative.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
ShowActivity.this.finish();

);
能不能实现监听屏幕?屏幕多长时间没有点击过就开启Activity2?

追答

Handler handler = new Handler();
handler.postDelayed(new MyThread(), 3000);//3000表示3秒
class MyThread implements Runnable

public void run()
.//要执行的代码

追问

非常感激您的回答,还是火神答案最适合,抱歉

android开发问题:如何在当前Acitivity中用代码获取上一个Activity名称?

就是说判断当前Activity是从哪个Activity跳转过来的

需要在跳转的Intent对象中添加一个参数:

intent.putExtra("comeFrom", activityName);

跳转到目标activity时带上当前activity的名字,这样才知道是从哪里跳转进来的。

参考技术A 可以写一个List 每打开一个Activity 都添加进去。这样就能获得上一个activity了。 退出客户端的时候 很多都是这么操作的 把这些activity相应finish掉。 参考技术B 在上一个activity里把activity的名称传出去,然后在当前activity里获取就行了 参考技术C 上一个activity里把activity的名称传出去,然后在当前activity里获取不就行了?追问

额 已经解决了 把分给你吧

本回答被提问者采纳

以上是关于android如何中自动跳转activity的主要内容,如果未能解决你的问题,请参考以下文章

Android——实现欢迎界面的自动跳转(转)

Android欢迎页面2秒钟后自动跳转到主页面

Android之Activity跳转

Android studio这两个之间能页面跳转吗 ??怎么实现(纯新手😭求大佬帮看看)

android studio真机测试页面跳转时自动弹出软件,报错null exception解决方案

如何杀掉 android 如何跳转到 main activity