pea*_*mak 8 android onresume android-notifications
我正在绘制一个绘图应用程序,并希望从通知栏恢复活动.我在研究后添加了代码来自通知栏中的恢复(而不是创建),如下所示.
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main); // inflate the layout
generateNotification(Doodlz2.this, getResources().getString(R.string.app_name));
Display display = getWindowManager().getDefaultDisplay();
Constants.SCREEN_W = display.getWidth(); // deprecated
Constants.SCREEN_H = display.getHeight(); // deprecated
doodleView = (DoodleView2) findViewById(R.id.doodleView);
doodleView.setOnTouchListener(this);
doodleView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
Constants.DRAW_W = doodleView.getWidth();
Constants.DRAW_H = doodleView.getHeight();
}
});
OnCreate_NewDialog();
}
@Override
protected void onResume()
{
super.onResume();
}
@Override
protected void onPause()
{
super.onPause();
}
@Override
protected void onDestroy()
{
super.onDestroy();
}
private static void generateNotification(Context context, String message)
{
Intent notificationIntent = new Intent(context, Doodlz2.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.logo)
.setContentTitle(context.getString(R.string.app_name))
.setContentIntent(intent)
.setPriority(5) //private static final PRIORITY_HIGH = 5;
.setContentText(message)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_LIGHTS);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
}
Run Code Online (Sandbox Code Playgroud)
public DoodleView2(Context c, AttributeSet attrs)
{
super(c, attrs);
context_new = c;
setFocusable(true);
setFocusableInTouchMode(true);
//setLayerType(View.LAYER_TYPE_SOFTWARE, null); // for solely removing the black eraser
mPath = new Path();
mCanvas = new Canvas();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
Constants.mPaint = new Paint();
Constants.mPaint.setAntiAlias(true); // smooth edges of drawn line
Constants.mPaint.setDither(true);
Constants.mPaint.setColor(Color.BLACK); // default color is black
Constants.mPaint.setStyle(Paint.Style.STROKE); // solid line
Constants.mPaint.setStrokeJoin(Paint.Join.ROUND);
Constants.mPaint.setStrokeWidth(5); // set the default line width
Constants.mPaint.setStrokeCap(Paint.Cap.ROUND); // rounded line ends
}
@Override
public void onSizeChanged(int w, int h, int oldW, int oldH)
{
super.onSizeChanged(w, h, oldW, oldH);
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mBitmap = getResizedBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.bdg6),h,w);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawBitmap(mBitmap, 0, 0, null); // draw the background screen
for (Path p : paths)
{
Constants.mPaint.setColor(colorsMap.get(p));
Constants.mPaint.setStrokeWidth(widthMap.get(p));
canvas.drawPath(p, Constants.mPaint);
}
Constants.mPaint.setColor(selectedColor);
Constants.mPaint.setStrokeWidth(selectedWidth);
canvas.drawPath(mPath, Constants.mPaint);
}
Run Code Online (Sandbox Code Playgroud)
绘图板正在使用涂料可以绘制.按下主页按钮并从长按主屏幕恢复,线路仍在那里.然而,从通知栏恢复,所有线都消失了,并且再次重新启动绘图板,显示onCreate_NewDialog.
如果从通知栏恢复但是如果从长按主屏幕恢复仍然存在,为什么绘制的线条消失了?
代替:
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)
经过:
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
Run Code Online (Sandbox Code Playgroud)
现在,您可以从历史记录中调用该活动,而不是创建新类。
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |