Android 当应用程序进入后台时,通知将显示上一个通知的内容
我在活动Android 当应用程序进入后台时,通知将显示上一个通知的内容,android,android-activity,push-notification,inappbrowser,Android,Android Activity,Push Notification,Inappbrowser,我在活动ViewInWeb中实现了应用程序内浏览器。我使用此活动打开应用程序内部的新闻。我还使用此活动打开包含链接的推送通知。但出现了以下问题: 我在ViewInWeb 我按下home按钮,应用程序进入后台 我收到一个包含链接的通知 当我打开通知时,它不会显示此通知中的内容,但会显示我按下“主页”按钮之前的内容 打开通知时,我使用以下代码: Intent resultIntent; PendingIntent resultPendi
ViewInWeb
中实现了应用程序内浏览器。我使用此活动
打开应用程序内部的新闻。我还使用此活动打开包含链接的推送通知。但出现了以下问题:
ViewInWeb
Intent resultIntent;
PendingIntent resultPendingIntent = null;
resultIntent =new Intent(this, ViewInWeb.class);
Bundle basket = new Bundle();
basket.putString(TimeUtils.TAG_LINK,link );
basket.putString(TimeUtils.TAG_TITLE,title );
basket.putInt("TYPE", 1);
resultIntent.putExtras(basket);
resultPendingIntent = PendingIntent.getActivity(this, Integer.parseInt(nr),
resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
ViewInWeb
的代码如下:
public class ViewInWeb extends AppCompatActivity {
private WebView webView;
ProgressBar progressBar;
private String link, title;
private String url_link, url_title;
private int count = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_in_web);
webView = (WebView) findViewById(R.id.browser_web_view);
// enable back button
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_black);
getSupportActionBar().setElevation(0);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
.
.
//code for Google Analytics tracking
.
}
count++;
}
});
//get the data
Bundle basket_category = getIntent().getExtras();
link = basket_category.getString(TimeUtils.TAG_LINK);
title = basket_category.getString(TimeUtils.TAG_TITLE);
int type = basket_category.getInt("TYPE");
if(type==1){
.
.
//code for Google Analytics tracking
.
}
url_link = link;
url_title = title;
//put the data
getSupportActionBar().setTitle(title);
webView.loadUrl(link);
// create new ProgressBar and style it
final ProgressBar progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
progressBar.setLayoutParams(new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 25));
// retrieve the top view of our application
final FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
decorView.addView(progressBar);
ViewTreeObserver observer = progressBar.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
View contentView = decorView.findViewById(android.R.id.content);
//progressBar.offsetTopAndBottom(contentView.getBottom()-10);
float x = contentView.getBottom();
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
Log.e("aggbfaevfsa", String.valueOf(x));
progressBar.setY(contentView.getY() + result - 10);
// progressBar.setX(0);
ViewTreeObserver observer = progressBar.getViewTreeObserver();
observer.removeGlobalOnLayoutListener(this);
}
});
webView.setWebChromeClient(new WebChromeClient() {
// page loading progress, gone when fully loaded
public void onProgressChanged(WebView view, int progress) {
if (progress < 100 && progressBar.getVisibility() == ProgressBar.GONE) {
progressBar.setVisibility(ProgressBar.VISIBLE);
}
progressBar.setProgress(progress);
if (progress == 100) {
progressBar.setVisibility(ProgressBar.GONE);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if (!TextUtils.isEmpty(title)) {
getSupportActionBar().setTitle(title);
url_link = view.getUrl();
url_title = title;
}
}
});
// set the animation when opening the activity
overridePendingTransition(R.anim.activity_open_translate,
R.anim.activity_close_scale);
}
// set the animation when closing the activity
@Override
protected void onPause() {
super.onPause();
// closing transition animations
overridePendingTransition(R.anim.activity_open_scale,
R.anim.activity_close_translate);
}
}
公共类ViewInWeb扩展了AppCompative活动{
私有网络视图;
ProgressBar ProgressBar;
私有字符串链接,标题;
私有字符串url\u链接,url\u标题;
私有整数计数=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u视图在web中);
webView=(webView)findViewById(R.id.browser\u web\u view);
//启用后退按钮
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_black);
getSupportActionBar().setElevation(0);
WebSettings WebSettings=webView.getSettings();
setJavaScriptEnabled(true);
setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
.
.
//谷歌分析追踪代码
.
}
计数++;
}
});
//获取数据
Bundle basket_category=getIntent().getExtras();
link=basket\u category.getString(TimeUtils.TAG\u link);
title=basket\u category.getString(TimeUtils.TAG\u title);
int type=basket_category.getInt(“type”);
如果(类型==1){
.
.
//谷歌分析追踪代码
.
}
url_link=链接;
url_title=标题;
//把数据
getSupportActionBar().setTitle(标题);
loadUrl(链接);
//创建新的ProgressBar并设置其样式
final ProgressBar ProgressBar=新的ProgressBar(this,null,android.R.attr.progressBarStyleHorizontal);
progressBar.setLayoutParams(新的ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,25));
//检索应用程序的俯视图
最终FrameLayout decorView=(FrameLayout)getWindow().getDecorView();
decorView.addView(progressBar);
ViewTreeObserver observer=progressBar.getViewTreeObserver();
observer.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListener(){
@凌驾
公共图书馆{
View contentView=decorView.findviewbyd(android.R.id.content);
//progressBar.offsetTopAndBottom(contentView.getBottom()-10);
float x=contentView.getBottom();
int结果=0;
int resourceId=getResources().getIdentifier(“status\u bar\u height”、“dimen”、“android”);
如果(资源ID>0){
结果=getResources().getDimensionPixelSize(resourceId);
}
Log.e(“aggbfaevfsa”,String.valueOf(x));
setY(contentView.getY()+结果-10);
//progressBar.setX(0);
ViewTreeObserver observer=progressBar.getViewTreeObserver();
观察者:RemoveGlobalayOutliner(本);
}
});
setWebView.WebChromeClient(新WebChromeClient(){
//页面加载进度,完全加载时消失
public void onProgressChanged(WebView视图,int-progress){
如果(进度<100&&progressBar.getVisibility()==progressBar.GONE){
progressBar.setVisibility(progressBar.VISIBLE);
}
progressBar.setProgress(进度);
如果(进度==100){
progressBar.setVisibility(progressBar.GONE);
}
}
@凌驾
接收到的标题上的公共无效(WebView视图,字符串标题){
super.onReceivedTitle(视图、标题);
如果(!TextUtils.isEmpty(title)){
getSupportActionBar().setTitle(标题);
url_link=view.getUrl();
url_title=标题;
}
}
});
//在打开“活动”时设置动画
覆盖翻译(R.anim.activity\u open\u translate,
R.动物活动(接近量表);
}
//在关闭活动时设置动画
@凌驾
受保护的void onPause(){
super.onPause();
//关闭过渡动画
覆盖过渡(R.anim.activity\u open\u scale,
R.anim.activity\u close\u translate);
}
}
当应用程序中出现两个通知时,也会出现同样的问题。打开第一个后,我按home(主页)按钮。当我按下第二个按钮时,它会显示第一个按钮的内容
有没有办法解决这个问题。问题是,一旦应用程序在后台运行,可能就不会调用
onCreate()
(它的活动可能还没有被销毁)
下面是您可以在ViewInWeb
活动中执行的操作,而不是在onCreate()
中处理新的意图:
注意!如果您使用片段,它建议您处理intent fro
public class ViewInWeb extends AppCompatActivity {
......
@Override
protected void onCreate(Bundle savedInstanceState) {
....
//initialize your widgets, as you did, but don't start loading data
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
handleIntent();
}
private void handleIntent() {
// handle intent here!
Bundle basket_category = getIntent().getExtras();
link = basket_category.getString(TimeUtils.TAG_LINK);
title = basket_category.getString(TimeUtils.TAG_TITLE);
int type = basket_category.getInt("TYPE");
if(type==1){
//code for Google Analytics tracking
}
url_link = link;
url_title = title;
//put the data
getSupportActionBar().setTitle(title);
webView.loadUrl(link);
}
}