android如何中自动跳转activity
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android如何中自动跳转activity相关的知识,希望对你有一定的参考价值。
我的意思是:activity1 十秒不操作,自动跳转到activity2(类似屏保),但是activity1又是个类似菜单的页面。在activity1中跳转到任意activity返回activity1之后依然能完成十秒自动跳转,在线求高手指点!
十秒跳转我已经完成,但是问题有两个:1.从activityN返回acrivity1之后,就不会自动跳转;2.我把跳转代码放到onRestart()里面,从其他activity返回activity1之后确实能跳转,但是BUG也就产生了:activity2会启动两到三次!
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 Activityprivate 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的名字,这样才知道是从哪里跳转进来的。
额 已经解决了 把分给你吧
本回答被提问者采纳以上是关于android如何中自动跳转activity的主要内容,如果未能解决你的问题,请参考以下文章
Android studio这两个之间能页面跳转吗 ??怎么实现(纯新手😭求大佬帮看看)