我开发了一个应用程序,我有一个活动A,当它处于暂停状态时我正在调用一个服务类,当窗口按下时我想要回忆活动A创建一个窗口在最后一个暂停状态下再次从后台堆栈, 我尝试了很多东西,但它不断重新创建活动,我尝试了singleTask lunchMode和很多东西,但没有任何作用
这是我的服务类:
public class ChatHeadService extends Service {
public static WindowManager windowManager;
public static ImageView chatHead;
public static View myview;
@Override public IBinder onBind(Intent intent) {
// Not used
return null;
}
@Override public void onCreate() {
super.onCreate();
LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
//WindowManager.LayoutParams.TYPE_INPUT_METHOD |
WindowManager.LayoutParams.TYPE_PHONE,// | WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
myview = li.inflate(R.layout.dial_actionbar, null);
chatHead=(ImageView)myview.findViewById(R.id.dialbar);
chatHead.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
windowManager.removeView(myview);
Intent goback = new Intent(ChatHeadService.this, IncomingCallScreen.class);
goback.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ChatHeadService.this.startActivity(goback);
return true;
}
});
windowManager.addView(myview, params);
}
@Override
public void onDestroy() {
super.onDestroy();
windowManager.removeView(myview);
}
}
这是我调用服务的部分: @override
protected void onPause() {
super.onPause();
if(incomingCall==true)
{
Intent gotoBackService=new Intent(getApplicationContext(),ChatHeadService.class);
startService(gotoBackService);
}
}
答案 0 :(得分:1)
这对我有用 Intent in = new Intent()。setClass(ChatHeadService.this,IncomingCallScreen.class); in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); in.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); ctx.startActivity(IN);
并设置launchMOde:SingleTop
答案 1 :(得分:0)
如果您使用FLAG_ACTIVITY_NEW_TASK,则每次都会重新创建它。
按照here
的说明尝试使用FLAG_ACTIVITY_BROUGHT_TO_FRONT如果这不会导致与您的proyect需求冲突,您可以在app manifestiest.xml中设置launchmode
android:launchMode="singleInstance"
参考:Resume started activity from Service
希望这有帮助。
答案 2 :(得分:0)
使用此代码并声明此
上下文ctx = this;
Intent in=new Intent().setClass(MyAlarmService.this,Reminder.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ctx.startActivity(in);
还在您的清单中为此激活
添加android:launchMode =“singleTop”答案 3 :(得分:0)
您可以像这样调用新活动。
Intent intent = new Intent(getBaseContext(),Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
答案 4 :(得分:0)
试试这个,
问题是您无法在广播接收器上使用startActivity方法尝试使用此方法。
Intent mIntent=new Intent(FinishService.this,Information.class);
sendBroadcast(mIntent);